activerecord - 查询多个表中的一个表中的记录(而不仅仅是连接表中的行)

时间:2016-12-08 02:00:47

标签: ruby-on-rails activerecord

今天我花了很多时间试图弄清楚如何从多个表中查询它所属的一个表中的记录。

如果我有一个加入用户和事件的成员表,那么什么样的查询会找到参加给定事件的所有用户,或者给定用户参加的所有事件?

我最终遇到过这样的事情(有效):

Member.where(user: @user).first.events

但是这种查询可以在没有SQL语法的情况下完成吗?类似的东西:

max

1 个答案:

答案 0 :(得分:1)

您应该能够像这样访问用户的事件和事件的用户:

@event.users
@user.events

如果你定义了has_many:through关联 (http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association

class User < ApplicationRecord
  has_many :members
  has_many :events, through: :members
end

class Member < ApplicationRecord
  belongs_to :user
  belongs_to :event
end

class Event < ApplicationRecord
  has_many :members
  has_many :users, through: :members
end