0

我有一个Camping有很多Images 的模型。

class Camping < ActiveRecord::Base
  has_many :images
end

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

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 中已经提供此类功能而无需重载的某些实用程序?

4

0 回答 0