Rails 3:内部联接与关联

时间:2011-05-20 17:28:38

标签: ruby-on-rails activerecord left-join

我有点卡在Active Record查询问题上。我想在查询中执行左连接而不是内连接,但joins方法的结果只返回内连接。

Entry.
  joins(:measurements => :measurement_type).
  sum(:value, :conditions => ['name = ?','Calories'])

棘手的部分是:measurements:measurement_type有一个belongs_to关系,这是name列所在的位置。

现在这只是为有food_posts的用户返还的金额。目标是为所有用户返回总和。没有食物的用户的总和为零。

我在这里试过谷歌搜索和搜索其他帖子,但还没有找到答案。有什么建议吗?

我也在我的开发环境中使用SQLite和Postgresql进行生产。

2 个答案:

答案 0 :(得分:4)

如果你想做一个左连接而不是内连接,你需要使用自定义'sql fragments'

在您的示例中,

relation.joins("left join measurements on measurements.id = measurement_type.measurements_id")

或者那些依赖于你的设置的东西。

这个tutorial非常清楚地总结了它。

答案 1 :(得分:1)

MetaWhere gem支持外连接,以及其他许多优点:

https://github.com/ernie/meta_where