rails 控制台中的隐藏日期字段设置属性为 nil(但不在数据库中)

Hidden date field setting attributes to nil in rails console (but not in the database)

我正在尝试将当前日期作为隐藏字段传递到我的表单中。问题是日期被保存到数据库中,但是当我尝试访问它时,它是零。

在我的架构中:

t.date     "spotlight_start_date"
t.date     "newsletter_start_date"
t.date     "social_media_promotion_start_date"
t.date     "personalized_campaign_start_date"

形式:(无关内容省略)

<%= form_for @job do |f| %>
 <%= f.hidden_field :spotlight_start_date, value: Time.current %>
 <%= f.hidden_field :social_media_promotion_start_date, value: Time.current  %>
 <%= f.hidden_field :newsletter_start_date, value: Time.current %>
 <%= f.hidden_field :personalized_campaign_start_date, value: Time.current %>
 <%= f.submit %>
<% end %>

控制台:(日期属性已保存到数据库)

...spotlight_start_date: "2016-01-18", newsletter_start_date: "2016-01-18", social_media_promotion_start_date: "2016-01-18", personalized_campaign_start_date: "2016-01-18">

当我尝试访问日期值时,我得到了 nil:

@job.spotlight_start_date
=> nil

这是怎么回事?我的想法可能是隐藏字段将日期保存为字符串,这就是 rails 控制台认为它为零的原因。我已经尝试 'Time.now',并在隐藏字段中放置 'as :date' 但没有成功。

请帮忙!谢谢!

在您的控制台中输入 @job.spotlight_start_date.valid?

如果为假,则输入 @job.spotlight_start_date.errors.full_messages 它应该打印出问题所在。

哎呀我傻了!我在我的模型中设置了 class 方法,其名称与日期属性相同。属性被方法覆盖。我不觉得自己像个傻瓜吗!

非常感谢大家的帮助!