我有一個將記錄插入我的數據庫(MySQL)的函數。它有許多列,其中許多列在數據庫中都有默認值。因此傳遞這些變量的值是可選的。如果未傳遞變量,請使用數據庫默認值(Ruby on Rails)
def assign_X_to_Y(options = {})
. . .
@bar.var1 = options[:foo]
. . .
end
我想做到以下幾點:
- 如果一個變量存在(例如:選擇[:FOO]),將其添加到我正在做記錄。
@bar.var1 = options[:foo]
- 如果沒有,我不想添加它 - 我想使用數據庫默認值。
我知道我可以簡單地做一個if
:
if options[:foo]
@bar.var1 = options[:foo]
end
但是我有很多這些變量的,所以我覺得必須有一個更好的方式,如果語句具有負載。類似於「如果不存在設置爲空」的表達式:
@bar.var1 = options[:foo] || nil
有沒有什麼和我說的一樣?我不能使用上述表達式,因爲我不想將它設置爲空(我認爲它會這樣做),我想使用默認值...
在此先感謝!
您是將值賦給模型還是創建SQL語句?請將'assign_X_to_Y'方法添加到您的問題中。對於甚至沒有與讀者分享的方法,也不可能給出重構建議。 – max
向方法添加了'@bar.var1 = options [:foo]'......這是否澄清了我正在爲模型添加值? –
是的,如果它的模型只是做'@ bar.assign_attributes(options)' – max