У меня есть две модели в отношениях has_many, так что Log has_many Items. Затем Rails прекрасно настраивает такие вещи, как: some_log.items
, который возвращает все связанные элементы в some_log. Если бы я хотел, чтобы заказать эти элементы на основе другого поля в модели Items есть способ сделать это с помощью аналогичной конструкции, или же нужно разбить на что-то вроде:Рельсы упорядочены по связанной модели
Item.find_by_log_id(:all,some_log.id => "some_col DESC")
Так как Rails 3.x, синтаксис named_scope несколько отличается. Теперь он называется «scope» вместо «named_scope» и использует функции для определения структуры области. Например: «scope: order, order (« some_col DESC »)». –
В Rails 4 снова есть другой подход. Объяснение ассоциации по умолчанию должно быть указано как лямбда, например 'has_many: items, -> {order (: some_col) .where (foo: 'bar')}' и, аналогично, области с именами теперь занимают область лямбда: name_of_scope, -> {где (foo: 'bar')} '. Область по умолчанию принимает блок: 'default_scope: {где (foo: 'bar')}' – Leo
Превосходный ответ. +1 – sscirrus