rails if null然后不重复查询关联表

时间:2010-09-10 14:20:11

标签: ruby-on-rails

我有以下代码。此代码执行两次相同的SQL查询。因为图像是一个相关的属性表。

有没有办法只做一个查询,但结果仍然相同?

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

额外澄清: 解决方案应该适用于2个场景:

  1. 图片的网址字段为空,但存在图片
  2. 该属性不存在图像

2 个答案:

答案 0 :(得分:4)

如果你想在一行上做,你可以这样做:

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

但是在单独的一行上完成任务可能更清楚:

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

答案 1 :(得分:0)

image_url = @property.images.first.url

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

即使它有两行也是一个简单的解决方案(至少对我而言:D)