我想通过表关联建立一个活动的记录查询。这里是我的模型:Rails&Active Record:如何连接仅通过另一个表关联的表?
Event.rb:
has_many :event_keywords
User.rb:
has_many :user_keywords
Keyword.rb:
has_many :event_keywords
has_many :user_keywords
EventKeyword.rb:
belongs_to :event
belongs_to :keyword
UserKeyword.rb:
belongs_to :user
belongs_to :keyword
我试图建立一个事件作用域需要为user_id为PARAM并返回所有共享关键字的事件。这是我的尝试,但它不承认user_keywords协会:
scope :with_keywords_in_common, ->(user_id) {
joins(:event_keywords).joins(:user_keywords)
.where("user_keywords.user_id = ?", user_id)
.where("event_keywords.keyword_id = user_keywords.keyword_id")
}
如何解决此问题?
真棒,这看起来很完美!我必须改变的是user.user_keywords.pluck(:id)到user.user_keywords.pluck(:keyword_id) –