在我的应用程序中,Photo has_and_belong_to_many :land_uses
我在模型中有这个辅助方法Photo
:
def land_use_list
land_uses.map(&:name).join(', ')
end
这让我觉得代码异味(demeter),但我无法弄清楚如何将其移至 LandUse 模型。我想做的是:
class LandUse < ActiveRecord::Base
...
def self.list
self.map(&:name).join(', ')
end
...
end
所以photo.land_use_list
我可以打电话而不是打电话photo.land_uses.list
。
但这不起作用,因为它是针对类调用的,而不是针对属于特定照片的作用域实例调用的。
有没有办法做我在想的事情?而且,更一般地说,您如何在您的应用程序中处理此类问题?将列表代码移动到 LandUse 模型是正确的方法,还是您会推荐一些不同的方法?