我想要的是查询所有只有通过habtm
关联关联的“fra”语言的媒体。目前,此查询返回Media
包含“fra”的实例,例如 ["fra", "eng"]。我使用 Postgres。
因此,(1)我想找到完全具有语言“x”而没有其他语言的媒体,(2)找到完全具有语言“x”和“y”的媒体,(3)找到具有正是语言“x”、“y”和“z”等。
class Media < ActiveRecord::Base
has_and_belongs_to_many :audio_language_records, :join_table => "audio_languages_media", :class_name => "Language"
end
class Language < ActiveRecord::Base
attr_accessor :code
end
我试过这个,但它返回所有包含“fra”的媒体,但不仅仅是“fra”
Media.joins(:audio_language_records).where("languages.code = ? AND languages.code != ?", "fra", "eng")
以下不按预期工作并返回相同的结果
Media.joins(:audio_language_records).where("languages.code IN (?) AND languages.code NOT IN (?)", ["fra"], ["eng"])