gpt4 book ai didi

ruby-on-rails - 使用has_many :through时给定两个实体找到连接模型的最简单方法是什么

转载 作者:行者123 更新时间:2023-12-04 06:32:21 26 4
gpt4 key购买 nike

我正在使用 has_many :through 来指定两个实体之间的多对多关联,并且我希望能够轻松地从连接表中检索模型。以下是主要实体:

class Group < ActiveRecord::Base
has_many :memberships
has_many :members, :through => :memberships
end

class Member < ActiveRecord::Base
has_many :memberships
has_many :groups, :through => :memberships
end

联接表称为“memberships”,并具有附加属性“admin”,表示用户可以充当该组的组管理员。这是迁移代码段:

create_table :memberships do |t|
t.integer :group_id
t.integer :member_id
t.boolean :admin

t.timestamps
end

现在,在我的 Controller 中,我想检查特定成员是否是组的管理员。我目前有以下代码(有效):

membership = @member.memberships.find_by_group_id(@group.id)

我的问题:有没有比使用 find_by_group_id 帮助器更优雅的方法来检索连接对象(成员资格)?

最佳答案

避免辅助方法,你可以这样写:

  @member.admin?(@group)

类似这样的东西(未经测试!)。

  class Member < ActiveRecord::Base

has_many :memberships
has_many :groups, :through => :memberships
named_scope :admin?, :through => :memberships,
lambda {|group|:conditions=> ["admin = 'true' and group_id = ?"], group.id }
end

关于ruby-on-rails - 使用has_many :through时给定两个实体找到连接模型的最简单方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/910163/

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