0
特定の値でタグ付けされたレコードを返すことができるSQL検索を作成しようとしています。レコードに関連付けられているレコードからレコードを除外する
タグはこのように、参加モデルを使用して適用されます。
class Customer < ActiveRecord::Base
has_many :tag_assignments
has_many :tags, :through => :tag_assignments
end
class Tag < ActiveRecord::Base
has_many :tag_assignments
has_many :customers, :through => :tag_assignments
end
class TagAssignment < ActiveRecord::Base
belongs_to :customer
belongs_to :tag
end
私が現在持っているクエリは次のとおりです。
SELECT DISTINCT customers.* FROM customers LEFT OUTER JOIN tag_assignments ON tag_assignments.customer_id = customers.id WHERE (tag_assignments.tag_id NOT IN (?))
?クエリで、私が含まれたくないタグのリストで置き換えられます。
これは、1つのタグのみが適用されている場合でもうまく動作しますが、複数のタグを取得するとすぐに、他のタグの1つが一致するため除外にもかかわらず表示されます。
追加句が追加されたとき(他のタグの存在や他の顧客属性との一致など)には、この作業を続ける必要がありますが、正しい方向の任意の点に感謝します。 ..