Заказ рельсов по внешнему ключу (включая ноль) - PullRequest
2 голосов
/ 01 июня 2011

Я пытаюсь отсортировать столбец 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 голосов
/ 02 июня 2011

Вам нужно использовать SQL LEFT JOIN в вашем joins выражении. Это приведет к извлечению всех Foos (с Foos, у которых есть бары)
Чтобы использовать 'Rails way', вы можете заключить его в область видимости:

scope :some_scope_name, joins("LEFT JOIN bars ON foos.id = bars.foo_id")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...