рельсы если ноль, то в противном случае без повторения запроса для связанной таблицы - PullRequest
1 голос
/ 10 сентября 2010

У меня есть следующий код.Этот код выполняет один и тот же SQL-запрос дважды.Поскольку изображения - это связанная таблица свойств.

Можно ли выполнить только один запрос, но при этом получить тот же результат?

(@property.images.first ? @property.images.first.url : "/img/nophoto.jpg")

Дополнительные пояснения: решение должно работать в 2 раза.Сценарий:

  1. поле URL для изображения пустое, но изображение существует
  2. для этого свойства не существует изображения

Ответы [ 2 ]

4 голосов
/ 10 сентября 2010

Если вы хотите сделать это в одну строку, вы можете сделать:

(((first_image = @properties.images.first) && first_image.url) ||
             "/img/nophoto.jpg")

Но, вероятно, более четко выполнить назначение в отдельной строке:

first_image = @properties.images.first
(first_image && first_image.url) || "/img/nophoto.jpg"
0 голосов
/ 10 сентября 2010
image_url = @property.images.first.url

(image_url ? image_url : "/img/nophoto.jpg")

Несмотря на две строчки, это простое решение (по крайней мере, для меня: D)

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