4
我有一个:has_many => :through
关系相关的几种模式:使用活动记录,以查找连接表
class User < ActiveRecord::Base
has_many :group_members
has_many :groups, :through => :group_members
end
class Group < ActiveRecord::Base
has_many :group_members
has_many :users, :through => :group_members
end
class GroupMembers < ActiveRecord::Base
belongs_to :group
belongs_to :user
end
很容易找到的组和用户之间的关系用ActiveRecord:
groups = @user.groups
users = @group.users
但什么如果我想查找组和用户共享的连接表?现在我能想出的最佳解决方案是使用类方法。例如,在用户模式中,我有:
def group_member_for(group)
self.group_members.where(:group_id => group.id).first
end
这工作正常,但我怀疑有一个更清洁的方法。也许甚至是直接使用ActiveRecord关联的方法。喜欢的东西:
group_member = @user.groups.group_member
谢谢!看起来我并不太离谱。 – nullnullnull
前两位怎么做OP的要求?这对我来说似乎很不一样? –
Rails没有像'user.group_members(group)'这样的便捷方法来获取相关记录,这似乎很愚蠢。 –