Задать вопрос
hummingbird
@hummingbird

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

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

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

Model1.all.each do |item|
	item.model2.name # Иногда выводятся одинаковые имена. Надо оставить только одно уникальное имя.
end
  • Вопрос задан
  • 165 просмотров
Подписаться 1 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 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 выше
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
TEYCA Казань
от 150 000 до 240 000 ₽
Netwrk Буэнос-Айрес
от 5 000 до 7 500 $
от 6 000 до 8 000 $