我有一個Rails應用程序,需要重複設置默認屬性。有時候用戶會爲將被尊重的屬性提供值,但在其他情況下,模型或用戶可能希望這些屬性被忽略原始值的默認值覆蓋。使用可選的默認值創建屬性訪問器
我猜想這個問題需要一個砰的一聲(!
)和non-banged方法設置默認值,允許用戶和程序切換到適當的狀態。非打破的setter只會在默認值不爲零時設置默認值,而被打破的版本將始終用默認值覆蓋屬性。所不同的是次要的:
class BangDiBang
attr_accessor :value
def set_default
self.value ||= do_some_suff_to_determine_default_value
end
def set_default!
self.value = do_some_suff_to_determine_default_value
end
...
end
這段代碼的問題是,如果我有一堆的變量設置,我將結束重複相同的代碼兩次,每次變量。
我的問題是如何偏出這段代碼?用一種方法保存邏輯,並用兩種方法set_value
和set_value!
用不同的賦值操作符調用中心邏輯。
我已經想出了一個解決方案:將中心邏輯寫爲文本,從setter方法中替換賦值操作並進行評估(但這不太合適)。我怎麼不重複自己?
如何創建關注點並將它們包含在需要它們的任何地方? – Severin