Rails – 模型疑问

鉴于我有这样的模型:

class Person has_many :owned_groups, :class_name => "Group", :foreign_key => :owner_id has_many :owned_group_memberships, :through => :owned_groups, :source => :group_memberships has_many :group_memberships, :foreign_key => "member_id" has_many :groups, :through => :group_memberships end class GroupMembership belongs_to :member, :class_name => 'Person' belongs_to :group end class Group belongs_to :owner, :class_name => "Person" has_many :group_memberships has_many :members, :through => :group_memberships end 

如何访问group中的members ? 总是我做@group.members或类似的东西,给我一个错误,说明在模型中找不到关系。

提前致谢。

##编辑##

我得到的错误是: Could not find the association "group_memberships" in model Group

我在一个正在研究的网站上做了类似的事情,但这些关联与你的工作方式有点不同,但也许它会有所帮助。 我认为你需要使用has_and_belongs_to_many关联来加入你的多对多关系。

在我的数据库中,我有Users,Members和UsersMembers

您不需要创建UsersMembers模型(在您的情况下为GroupMembership),但您需要一个数据库表来链接这两者。

 #Migration create_table :bands_users, :id => false, :force => true do |t| t.integer :band_id, :null => false t.integer :user_id, :null => false end #Models class Band < ActiveRecord::Base has_and_belongs_to_many :members, :class_name => 'User' end class User < ActiveRecord::Base has_and_belongs_to_many :bands end 

从此我现在可以调用@ band.members或@ user.bands

您可能需要在has_many:members语句中指定:class_name =>’Person’。