我有一个虚拟属性start_date
和一个数据库列start
(日期时间)。
start
我怎样才能用日期覆盖日期(但不是时间)start_date
?
我在 setter 方法中尝试了这个,记录器说 self.start/start 已设置,但在数据库和更新日志start
中仍然有旧日期。
# model: db table with columns: id(int), start(datetime)
class DateTimeTest < ActiveRecord::Base
attr_accessible :start_date, :start
def start_date=(value)
logger.debug '>>>>' + start.inspect
logger.debug '>>>>' + self.start.inspect
start = DateTime.new(value.to_date.year, value.to_date.month, value.to_date.mday, 15,15,15)
self.start = DateTime.new(value.to_date.year, value.to_date.month, value.to_date.mday, 15,15,15)
logger.debug '>>>>' + start.inspect
logger.debug '>>>>' + self.start.inspect
end
end
# view
<%= simple_form_for(@datetimetest) do |f| %>
<%= f.input :start_date, :as => :string %>
<%= f.input :start %>
<%= f.button :submit %>
<% end %>
# controller is a base scaffolding controller
在日志中,我可以看到start
已填充:
Parameters: {..., "datetimetest"=>{"start_date"=>"03.05.2012", "start(1i)"=>"2012", "start(2i)"=>"5", "start(3i)"=>"1", "start(4i)"=>"13", "start(5i)"=>"05"}