Rails 如何实现 2 个 model 之间的多组 many-to-many association

lifedim · 2012年11月30日 · 最后由 lifedim 回复于 2012年11月30日 · 2368 次阅读

这是我在做一个小项目时遇到的一个设计问题: 我有一个 Group 对象,一个 Member 对象。 我希望 Group 里包含一个 female_members 的关联,和一个 male_members 的关联,用来方便访问男/女成员列表。

所以我现在的问题是, 1 能否在相同的 models 之间产生 多组 many-to-many association ? 2 这种设计是否合理? 3 希望大家说说自己认为更好的实现方法。

谢谢:)

class Membership < ActiveRecord::Base belongs_to :member belongs_to :group end

class Member < ActiveRecord::Base has_many :memberships end

class Group < ActiveRecord::Base has_many :memberships has_many :female_members, through: :memberships, source: : member, conditions: "memberships.gender = 'female'" has_many :male_members, through: :memberships, source: : member, conditions: "memberships.gender = 'male'" end

http://feipinghuang.lue.so/2012/11/27/has_many-magic/

@feipinghuang 代码很直观,thx!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号