私はRailsモデルで次のスコープを持っています。結合のIN()はどこにありますか?
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
私Favourite
モデルは次のようになります。
class Favourite < ActiveRecord::Base
belongs_to :suggestion
belongs_to :user
end
また、あなたの 'favourite'モデルを投稿してもらえますか? –
なぜあなたは、その結合の代わりにhas_many troughの関係を作らないのですか? –
@ismaelga @PaulSimpson私は自分のFavouriteモデルをOPに追加しました。 'Favourite'は、' User'と 'Suggestion'のジョインモデルでなければなりません。なぜなら、ユーザーは他のユーザーに属する好きな提案をできるからです。 –