@artem_music

Как правильно составить WHERE в Rails?

Добрый день, заранее извиняюсь если мой вопрос покажется вам глупым - в рельсах пока новичок.

Есть модель Wedding, к которой привязаны фотографии (другая модель) с помощью гема Paperclip.
Для вывода, например, первой фотографии, делаю так:
#в контроллере
@wedding = Wedding.last
#во вьюхе
<%= image_tag @wedding.photos[0].image.url(:medium) %>


Возникла проблема - если у объекта нет фото, то приложение крашится. Как правильно сформировать запрос с учетом привязанной модели?
Что-то вроде Wedding.where(this.photos != nil)

Заранее спасибо.
  • Вопрос задан
  • 632 просмотра
Решения вопроса 2
Fahrenhe17
@Fahrenhe17
Ruby on Rails developer
=image_tag @wedding.photos[0].image.url(:medium) unless @wedding.photos.empty?


это если нужны все элементы wedding не зависимо от наличия фото. Если нужно все только с фото, то лучше сделать скоуп в моделе

на счет where вместе с привязанной моделью -

scope :with_photos, -> { joins(:photos).where('photos.empty? = ?', false) }
Ответ написан
@artem_music Автор вопроса
Wedding.includes(:photos).where("photos.wedding_id IS NOT NULL").references(:photos)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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