0
class Event
has_many :keywords, :through => :event_keywords
end
class User
has_many :keywords, :through => :user_keywords
end
我有一个计算基于其与特定用户共享的关键字事件的关联用户的方法的Active Record查询:眼下的Rails:优化的,而不是循环
User.rb
def calculate_event_relevance(event_id)
event_keywords = event.keywords
event_keywords.each do |kw|
user_keyword_match = self.keywords.where(id: kw.id).first
if user_keyword_match
## do some stuff
end
end
end
,我通过循环每个关键字。在循环中,我会查询用户是否也有该关键字。
有没有办法改变一个单一的查询(并保存到event_keywords),只返回event.keywords
,用户也有,所以我不需要遍历所有的查询?
是否有查询可以查找用户和事件共有的关键字?
谢谢@ davidhu2000!这比我想象的要容易得多:) –