hummingbird
@hummingbird

Как вывести только уникальные записи последней связи?

Есть две модели и их связи:
Model1 -> belongs to -> Model2
Model2 -> has many -> Model1

На странице я вывожу список элементов модели Model2.
Все хорошо, но вот как убрать дублирующие строки?
.uniq тут не помогает, так как его повесить можно только на Model1 перед .each

Model1.all.each do |item|
	item.model2.name # Иногда выводятся одинаковые имена. Надо оставить только одно уникальное имя.
end
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 2
fairoj
@fairoj
Программист RM+
Не проще ли тогда сделать в обратную сторону?

Model2.joins(:model1).each do |item|
  item.name
end
Ответ написан
Комментировать
Если вопрос о том, как сделать uniq для коллекции, то
Model1.includes(:model2).map { |item| item.model2.name }.uniq.each { ... }

или
Model1.includes(:model2).uniq { |item| item.model2.name }.each { ... }


Если же о том, как вообще сделать выборку, то лучше использовать вариант от fairoj выше
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы