今天我花了很多时间试图弄清楚如何从多个表中查询它所属的一个表中的记录。
如果我有一个加入用户和事件的成员表,那么什么样的查询会找到参加给定事件的所有用户,或者给定用户参加的所有事件?
我最终遇到过这样的事情(有效):
Member.where(user: @user).first.events
但是这种查询可以在没有SQL语法的情况下完成吗?类似的东西:
max
答案 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