我正在創建一個rails應用程序,並且有一部分在我設計我的代碼的方式中導致了一些麻煩。我覺得我這樣做太麻煩了,我想知道是否有設計模式或通常更好的方法來做到這一點。情況是這樣的:如何更有效地組織資源類
我有一個城市模型和城市可以存儲木材,石頭和黃金。這些資源隨着時間的推移而變化。他們有自己的屬性,如amount,changed_timestamp。
現在,我認爲創建3個獨立的模型,比如wood_production,stone_production和gold_production似乎是個好主意,看起來相當不錯。我還創建的委託和虛擬屬性,這樣我可以執行類似:
city.wood or city.stone
然而,出現的問題時,我想改變量或時間戳特定的資源類型。說建築成本
{:wood => 200, :stone => 100, :gold => 50}
待創建。所以說,這座建築物已經建成,我現在必須減少城市的資源。這需要我做類似的事情:
self.wood_production.update_attribute(:change_timestamp, Time.now)
self.wood -= v
self.save
問題在於它是資源特定的。我更想擁有一個set_resource方法,該方法可以在不關心資源類型的情況下繼續執行(不使用ifs和更多的意大利麪條)。
你會怎麼做?
這是後者,它是wood_production.amount的別名。我不想將所有東西都存儲在城市中,所以我想這是更好的方式,使用發送。謝謝! – Spyros
是的,然後沒有更好的方法來組織它。使用'send'獲得更一般的修改屬性的方法會更好。雖然它是一個虛擬屬性,但我會調整我的示例,以便直接調用它而不是別名。 –