#sql #ruby-on-rails #ruby #activerecord
#sql #ruby-on-rails #ruby #activerecord
Вопрос:
Loan.includes(:decisions).map{|l| l.decisions.last.try(:smart_rate)}
=> [2, nil, 2, 1, 4, 4, 1, nil, nil, nil, nil, 1, nil, 1, nil, 1, nil, nil, nil, 3, nil, 3, 1, 1, nil, 3, 1, 1, 4, 1, 1, 1, nil, 2, 1, nil, 1, nil, 1, 1, nil, 3, nil, 1, 1, 1, 1, 1, 1, 1]
Я хотел бы отсортировать кредиты по smart_rate их последнего решения. Я пытаюсь отсортировать не массив, а результирующий Loan::ActiveRecord_Relation.
Можно ли это сделать с помощью ActiveRecord?
Комментарии:
1. Что вы пытаетесь сделать, можете ли вы объяснить немного больше?
2. Немного обновлено. Это кажется очень простым, но по какой-то причине я не могу получить нужный мне результат.
Ответ №1:
Если у вас есть отношение к решению, то вы могли бы сделать это, кредиты должны быть в правильном порядке в возвращаемом хэше.
Decision.where(...).includes(:loan).order(:smart_rate).map(amp;:loan).uniq
Комментарии:
1. Однако мне нужны нулевые значения. Мне все еще нужны базовые кредиты, даже если у них нет решения. Что еще более важно, я пытаюсь отсортировать не результирующий массив, а базовую коллекцию.
2. нам также понадобится uniq. это также делает все в памяти. Я пытаюсь использовать возможности AR для обработки этого в базе данных.
3. Заимствовать has_many :решения. Ваш ответ приведет к нескольким дублирующимся займам.