我有一个Camping
有很多Image
s 的模型。
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 中已经提供此类功能而无需重载的某些实用程序?