У меня есть метод в Business
, который является методом certified?
.Сортировка по методу ассоциации
Я хотел бы отсортировать Quotation
модель используя certified?
способ.
Возвращаемое значение этого метода является булевым. Поэтому, чтобы отсортировать его, я бы хотел, чтобы сертифицированные предприятия были наверху списка.
Вот ассоциации:
Business
принадлежит Quotation
Вот как я это делаю сейчас:
Quotation.by_biz_id(biz.id).includes(:business).sort_by {|quote| quote.business.certified? <=> quote.business.certified? }
Как вы можете видеть, что есть много метода построения цепочки в нем. Есть ли новый и лучший способ реорганизации кода?
Особенно повторяющееся условие: {|quote| quote.business.certified? <=> quote.business.certified?}
Если удалить условие <=>
, ошибка что-то вроде этого:
ArgumentError: comparison of FalseClass with true failed
Является ли это 'сертифицированным' поле в вашей таблице' business', или * регулярном * Ruby-методе? –
Это обычный метод. И он возвращает логическое значение. –
Мой ответ был неверным. Вот хороший пример того, что вам нужно сделать: http://stackoverflow.com/questions/8737111/sort-by-with-boolean-in-rails –