Упорядочение активных записей по отношению

#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 :решения. Ваш ответ приведет к нескольким дублирующимся займам.