如何查询has_many的反向通过?
How can I query the reverse of has_many through?
我正在尝试显示具有以下关联的用户会议。
class User < ApplicationRecord
has_many :panels
has_many :meetings, through: :panels
end
class Meeting < ApplicationRecord
has_one :panel
has_many :users, through: :panels
end
class Panel < ApplicationRecord
belongs_to :Meeting
belongs_to :panel_head, class_name: "User"
belongs_to :panel_member_1, class_name: "User"
belongs_to :panel_member_2, class_name: "User"
end
我可以使用以下代码显示会议的小组成员:
@meeting.panel.panel_head
@meeting.panel.panel_member_1
@meeting.panel.panel_member_2
我该如何做相反的事情?如果我想显示用户的会议,我最初想尝试 @user.meetings
但那没有用。然后我尝试 @user.panel.meetings
但我得到了一个错误。
所以我最终弄清楚了以防有人遇到同样的问题...
在我的用户模型中,我进行了以下查询:
def meetings
Meeting.joins(:panel).where("panels.panel_head_id = ? OR panels.panel_member_1_id = ? OR panels.panel_member_2_id = ?", id, id, id)
end
我现在可以使用 @user.meetings
并返回一个 ActiveRecord 关联。
我正在尝试显示具有以下关联的用户会议。
class User < ApplicationRecord
has_many :panels
has_many :meetings, through: :panels
end
class Meeting < ApplicationRecord
has_one :panel
has_many :users, through: :panels
end
class Panel < ApplicationRecord
belongs_to :Meeting
belongs_to :panel_head, class_name: "User"
belongs_to :panel_member_1, class_name: "User"
belongs_to :panel_member_2, class_name: "User"
end
我可以使用以下代码显示会议的小组成员:
@meeting.panel.panel_head
@meeting.panel.panel_member_1
@meeting.panel.panel_member_2
我该如何做相反的事情?如果我想显示用户的会议,我最初想尝试 @user.meetings
但那没有用。然后我尝试 @user.panel.meetings
但我得到了一个错误。
所以我最终弄清楚了以防有人遇到同样的问题...
在我的用户模型中,我进行了以下查询:
def meetings
Meeting.joins(:panel).where("panels.panel_head_id = ? OR panels.panel_member_1_id = ? OR panels.panel_member_2_id = ?", id, id, id)
end
我现在可以使用 @user.meetings
并返回一个 ActiveRecord 关联。