4
我正在使用表單對象,如7 Patterns to Refactor Fat ActiveRecord Models #3所述,目前我遇到了存儲日期問題。在Rails窗體對象中處理日期的最佳方式是什麼
這裏是我做了什麼:
class MyModelForm
# ...
def initialize(my_model: MyModel.new, params: {})
@my_model, @params = my_model, params
@my_model.date_field_on = Date.from_params @params, "date_field_on" if @params.present?
end
end
凡Date.from_params
實現,如:
class Date
def self.from_params(params, field_name)
begin
year = params["#{ field_name }(1i)"]
month = params["#{ field_name }(2i)"]
day = params["#{ field_name }(3i)"]
Date.civil year.to_i, month.to_i, day.to_i if year && month && day
rescue ArgumentError => e
# catch that because I don't want getting error when date cannot be parsed (invalid)
end
end
end
我不能只用@my_model.assign_attributes @params.slice(*ACCEPTED_ATTRIBUTES)
因爲我params["date_field_on(<n>i)"]
將跳過該日期將不會被保存。
是否有更好的方法來處理使用表單對象的日期字段?
這真的是一個很好的問題。我沒有看到幫助提取這些日期值。我發現那種奇怪! – phoet
這是你在找什麼:http://stackoverflow.com/questions/13605598/how-to-get-a-date-from-date-select-or-select-date-in-rails – davidfurber
我的第一個策略是將其委託給模型,因爲AR處理得很好。我的第二個策略是使用Virtus,就像在「7種模式」中的例子。 – davidfurber