假設一個多態關聯,比如說'商業'和'職員',這兩個關係都是'可居住的'(意味着他們有幾個小時分配給他們)。讓「小時」模型在業務對象或員工對象的小時內執行相同方法的建議方法是什麼?多態關聯共享模型
對於一個簡單的例子,「小時」的模式可能包含:
def self.find_hours_for_id(id)
Business.find(id).hours
end
不過,我可能要工作人員在執行相同的方法,在這種情況下,同樣的方法將改爲調用相當於的
Staff.find(id).hours
是好還是壞的形式爲設置基準模型類中的型號名稱:
class BusinessHour < Hour
@mymodel = "Business"
end
class Hour < ActiveRecord::Base
def self.find_hours_for_id(id)
@mymodel.constantize.find(id).hours
end
end
然後從控制器,請致電:
BusinessHour.find_hours_for_id(id)
有沒有更好的解決辦法?
謝謝!你會說這比我做的好嗎?我的解決方案也可以接受嗎?只是好奇。 – 99miles 2010-10-11 18:13:32
您的解決方案是可以接受的。這只是一個不同的方式。我的解決方案效果更好,如果你有「多重」繼承 – shingara 2010-10-11 19:05:34