您能否以has_many :through
关系引用联接表的属性?
经典联接关系:
class Committee
has_many :positions
has_many :members, through: :positions
end
class Member
has_many :positions
end
class Positions
belongs_to :committee
belongs_to :member
attr_accessible :description
end
这为我们提供了直接从委员会访问成员的好方法:
c = Factory :committee
first_member = members.first
通过关联访问联接表上的信息
有没有办法从这种关系中引用位置描述(存在于连接表中)?
e.g。
first_member_description = members.first.proxy.description
如果没有,那么访问特定委员会成员的描述的最简洁方法是什么?
我为什么要这样做?
我想这样做是因为我希望找到一个委员会成员,然后找到他们的描述:
即
peters_description = committee.members.find_by_first_name('Peter').proxy.description
答案 0 :(得分:0)
您可以在Position类上添加finder:
class Position < ActiveRecord::Base
belongs_to :committee
belongs_to :member
attr_accessible :description
scope :find_all_by_first_name, lambda do |name|
joins(:member).where("members.first_name = ?", name)
end
end
这应该允许你这样做:
peters_description = committee.positions.find_all_by_first_name('Peter').first.description