gpt4 book ai didi

ruby-on-rails - 使用 Active Record 查找连接表

转载 作者:行者123 更新时间:2023-12-04 18:11:01 25 4
gpt4 key购买 nike

我有几个与 :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

最佳答案

您可以简单地执行以下操作:

user.group_members
# and
group.group_members
# or
GroupMember.where(user_id: user.id, group_id: group.id)

关于ruby-on-rails - 使用 Active Record 查找连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14384733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com