所以,我试图搜索一个如何做到这一点的例子,我不确定我是否知道如何描述我正在尝试做的事情。谈到SQL,我是一个彻头彻尾的菜鸟,我确信这是非常基本的,但我完全迷失了:
我有一个Photo
模型has_many :tags, :through => :taggings
。标签有一个名称和一个id。
我想做点什么:Photo.where( #tag_name in [array] )
...但就像我说的那样,我不知道如何写这样的东西,或者搜索什么来查看Google上的例子。
任何人都可以给我一个这种查询的例子,以及它可能被称为什么?
谢谢!
答案 0 :(得分:10)
在我自己的类似模型上试过这个并且似乎工作得很好:
Photo.joins(:tags).where('tags.name' => ['herp','derp']).group(:id)
此外,这是AREL querying interface rails 3 uses上的一个很好的资源,其中包含与查询相关的这些和其他ActiveRecord调用的信息。
答案 1 :(得分:1)
所以,作为Brett方法的一个转折,结果证明以下工作没有打破PostgreSQL:
def self.tagged_with( string )
array = string.split(',').map{ |s| s.lstrip }
select('distinct photos.*').joins(:tags).where('tags.name' => array )
end
问题解决了!请参阅this article,了解为什么这比“群组”更好。