Rails:按相关模型属性查找?

时间:2011-03-22 19:01:24

标签: sql ruby-on-rails ruby-on-rails-3 activerecord

所以,我试图搜索一个如何做到这一点的例子,我不确定我是否知道如何描述我正在尝试做的事情。谈到SQL,我是一个彻头彻尾的菜鸟,我确信这是非常基本的,但我完全迷失了:

我有一个Photo模型has_many :tags, :through => :taggings。标签有一个名称和一个id。

我想做点什么:Photo.where( #tag_name in [array] )

...但就像我说的那样,我不知道如何写这样的东西,或者搜索什么来查看Google上的例子。

任何人都可以给我一个这种查询的例子,以及它可能被称为什么?

谢谢!

2 个答案:

答案 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,了解为什么这比“群组”更好。