如何优雅地将两个rails查询链接在一起?

时间:2011-09-22 06:25:29

标签: ruby-on-rails activerecord count find

我有以下模型对象:

#<Insight id: 155, endorse_id: 15, supporter_id: 15, created_at: "2011-09-22 02:27:50", updated_at: "2011-09-22 02:27:50">

Endorse有很多见解,支持者有很多见解。

我可以通过以下方式查询数据库:

  
    

Endorse.find(15).insights.count

         

Insight.find_all_by_supporter_id(15).Count之间的

  

如何优雅地将这两个查询链接在一起,我可以搜索由Endorse 15和支持者15创建的所有数据洞察?

3 个答案:

答案 0 :(得分:2)

Rails2:

insight_count = Insight.count(:conditions => {:supporter_id => 15, endorse_id => 15})
insights      = Insight.all(:conditions => {:supporter_id => 15, endorse_id => 15})

Rails3:

insight_count = Insight.where(:supporter_id => 15, endorse_id => 15).count
insights      = Insight.where(:supporter_id => 15, endorse_id => 15).all     

答案 1 :(得分:1)

试试这个

对于Rails 3.0.x,可能还有3.1

Endorse.find(15).insights.find_all_by_supporter_id(15).count

对于Rails 2.3.x

Endorse.find(15).insights.find_all_by_supporter_id(15).length

答案 2 :(得分:0)

我不确定你是否想将它们链接在一起,因为每个都是不同的查询。如果它们之间存在关系,那么对我来说就有意义了。例如,如果Endorse包含包含支持者的见解。