我的模型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中已经提供此类功能的一些实用程序,而不必重载?