在我的应用程序,Photo has_and_belong_to_many :land_uses
Ruby/Rails:创建一个对其子项实例进行操作的类方法?
我在Photo
模型这个辅助方法:
def land_use_list
land_uses.map(&:name).join(', ')
end
这在我看来是一个代码味道(得墨忒耳),但我一直无法弄清楚如何将其移至LandUse模型。我想要做的是一样的东西:
class LandUse < ActiveRecord::Base
...
def self.list
self.map(&:name).join(', ')
end
...
end
这样而不是调用photo.land_use_list
我可以打电话给photo.land_uses.list
。
但是,这不起作用,因为它被称为反对类,而不是被称为针对属于特定照片的范围实例。
有没有办法做我在想什么?而且,更一般地说,您如何在应用程序中处理类似这样的问题?是否将清单代码移到LandUse模型的正确方法,还是您会推荐不同的东西?
真棒建议,我不知道关联扩展。也感谢你为我清理德米特问题。我一直在想,照片只知道他们有土地用途,他们不应该关心土地如何使用自己的格式。但是我看到你的观点只是与它所具有的内容进行交互。这非常有帮助! – Andrew