Rails按外键排序(包括零)

时间:2011-06-01 19:58:28

标签: ruby-on-rails activerecord

我正在尝试对具有一个Foo的列Bar进行排序。目前,我正在使用加入,以便foos#index行动按bars.name排序*:

@foos = Foo.joins(:bar).order("bars.name")

问题是,并非所有foos都有bar,而且此加入似乎忽略了没有Foo的任何Bar。我不想忽略这些记录。有没有办法做到这一点?

*对于记录,我使用的是will_paginate,因此index操作实际上包括:

@foos = Foo.joins(:bar).paginate :page => params[:page], :order => "bars.name"

1 个答案:

答案 0 :(得分:0)

您需要在LEFT JOIN语句中使用SQL joins。这将获取所有Foos(具有条形的Foos)
要使用“Rails方式”,您可以将其包含在范围内:

scope :some_scope_name, joins("LEFT JOIN bars ON foos.id = bars.foo_id")