Ruby on rails Rails AR无法更新空datetime字段
我使用的是Rails 3.1。我有一个数据库列t.datetime“end_at”。如果在创建对象时输入日期,则可以稍后更改值(更新)。但是如果我把它留空(NULL),我发现我无法更新它。我验证了字段的名称和新值是否在参数中。为什么?Ruby on rails Rails AR无法更新空datetime字段,ruby-on-rails,Ruby On Rails,我使用的是Rails 3.1。我有一个数据库列t.datetime“end_at”。如果在创建对象时输入日期,则可以稍后更改值(更新)。但是如果我把它留空(NULL),我发现我无法更新它。我验证了字段的名称和新值是否在参数中。为什么? def update begin model = MyModel.find(params[:id]) model.update_attributes!(params[:my_model]) rescue ActiveRecord:
def update
begin
model = MyModel.find(params[:id])
model.update_attributes!(params[:my_model])
rescue ActiveRecord::RecordNotFound => e
#something
end
end
您需要确保两件事是真实的:
必须包含nil或DateTime。通常参数不作为日期时间输入参数[:end_at]
- 您的列不应该是时间戳(但情况可能已经不是这样了)
还要调查多参数属性。有错误吗?在结束时对
进行任何验证?无错误。我没有任何验证。我实际上有两个字段“开始”和“结束”。如果我在创建对象时填充“start_at”并回来编辑记录,我可以将start_at更改为新日期,但不能将end_at从NULL更改为其他任何内容。您可以从日志中发布params
吗?参数:{“id”=>“5327”,“my_model”=>{“group”=>“Beauty”,“name”=>“some”,“end_at”=>“03/20/13 03:39 PM”,“state”=>“1},“提交”=>“保存”、“utf8”=>“?”}这是验证。当我使用update_属性绕过验证时,它被保存。我没有费心将参数转换为DateTime对象。但为什么只有当字段为空时才会发生这种情况,我仍然不明白。在我将参数转换为DateTime对象并更新参数后,update_属性也可以工作。