Rails模型与has_many,through,class_name和where子句的关联

时间:2017-06-10 16:20:31

标签: ruby-on-rails model-associations

寻找rails关联的一点帮助。我有三个型号。用户,参加者和会议,我想根据他们的角色(在参与者模型下)返回参加会议的用户。但是,我无法弄清楚如何使用where子句返回用户。

我的代码目前返回Attendee,然后我查找User对象,但如果有我可以让它返回User对象而不必在通话结束后查一查。

class Meeting

  has_one :owner, -> { where role: 'owner' }, class_name: 'Attendee'
  has_one :mentor, -> { where role: 'mentor' }, class_name: 'Attendee'
  has_many :mentees, -> { where role: 'mentee' }, class_name: 'Attendee'

end

我拥有的其他协会如下

  has_many :users, through: :attendees
  has_many :attendees, dependent: :destroy

这可能吗?任何输入都非常感谢。

1 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解你。你试过这个,这就是你需要的吗?

class Meeting
  has_one :owner, -> { where role: 'owner' }, class_name: 'Attendee'
  has_one :mentor, -> { where role: 'mentor' }, class_name: 'Attendee'
  has_many :mentees, -> { where role: 'mentee' }, class_name: 'Attendee'

  has_one :owner_user, through: :owner, source: :user
  has_one :mentor_user, through: :mentor, source: :user
  has_many :mentees_users, through: :mentees, source: :user
end