0

如果我设置了以下模型,这是在 Authorship 表中添加属性 :foo 的适当方法,该属性特定于该关系而不是其他关系?

class Author < ActiveRecord::Base
  has_many :authorships
  has_many :books, :through => :authorships
end

class Book < ActiveRecord::Base
  has_many :authorships
  has_many :authors, :through => :authorships
end

class Authorship < ActiveRecord::Base
  attr_accessible :foo

  belongs_to :author
  belongs_to :book
end

什么查询会返回 :foo 属性,或者有更好的方法吗?

4

1 回答 1

0

使用时向中间模型添加属性是完全合适的has_many :through。这是使用该模式而不是has_and_belongs_to_many.

除了您显示的 ( attr_accessible) 之外,您还需要通过迁移将属性实际添加到表中:

class AddFooToAuthorships < ActiveRecord::Migration
  def change
    add_column :authorships, :foo, :text
  end
end

至于查询...我想这取决于您要做什么。@book.authorships.pluck(:foo)例如,将返回foo与特定书籍关联的 on authorships 的所有值。

于 2013-04-29T20:41:47.800 回答