我在 Rails 模型中有以下范围。
class Suggestion < ActiveRecord::Base
has_many :favourites
def self.favoured_by(user)
joins(:favourites).where(favourites: { user_id: user.id })
end
end
这很完美。它将返回特定用户收藏的所有建议。
我如何检索所有根本不喜欢或喜欢但不被该特定用户喜欢的所有建议?
def self.not_favoured_by(user)
# ...
end
我的最喜欢的
模型是这样的:
class Favourite < ActiveRecord::Base
belongs_to :suggestion
belongs_to :user
end
最佳答案
favorited_suggestions_ids = joins(:favourites).where(favourites: { user_id: user.id }).map(&:id)
return scoped if favorited_suggestion_ids.empty?
where('id not in (?)',favorited_suggestions_ids)
关于ruby-on-rails - Where NOT IN () on a join?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10377975/