在我的應用程序,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