如果未找到任何关系,则返回后备Active Record关系

时间:2013-06-20 20:59:26

标签: ruby-on-rails activerecord

我的模型Camping有很多Image s。

class Camping < ActiveRecord::Base
  has_many :images
end

我希望它总是返回一个图像,即使没有给出一个图像,一个fallback_image。我想通过重载属性getter解决这个问题:

class Camping < ActiveRecord::Base
  has_many :images

  def images
    attributes["images"] || [Image.new]
  end
end

这有效,但不是透明的。例如,如果使用了回退,则调用limit()或其他活动记录方法的控制器现在将失败:

Camping.find(1).images.limit(4)
#=> undefined method `limit' for #<Array:0xb0b85eec>

我如何更加透明地确保这种后备?我是否错过了ActiveRecord中已经提供此类功能的一些实用程序,而不必重载?

0 个答案:

没有答案