开发者

How can I chain two rails Queries together elegantly?

开发者 https://www.devze.com 2023-04-06 19:55 出处:网络
I have the following model object: #<Insight id: 15开发者_如何学编程5, endorse_id: 15, supporter_id: 15, created_at: \"2011-09-22 02:27:50\", updated_at: \"2011-09-22 02:27:50\">

I have the following model object:

#<Insight id: 15开发者_如何学编程5, endorse_id: 15, supporter_id: 15, created_at: "2011-09-22 02:27:50", updated_at: "2011-09-22 02:27:50">

Where Endorse has_many insights and Supporter has many insights.

I can query the db in the following way:

Endorse.find(15).insights.count

Insight.find_all_by_supporter_id(15).count

How can I elegantly chain both of these queries together where I can search for all Insights created by Endorse 15, and Supporter 15?


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     


Try this

For Rails 3.0.x and probably 3.1

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

For Rails 2.3.x

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


I'm not sure you would want to chain them together since each one is a different query. If there were relationships between them, then it would make sense to me. For example, if Endorse contained Insights which contained Supporters.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号