我打电话保存时出现异常!在一个模型中。
/ contacts / import_spreadsheet / 1 / import中的SQLite3 :: ConstraintException NOT NULL约束失败:contacts.created_at
在我的架构中,有问题的模型有:
t.datetime“created_at”,null:false
t.datetime“updated_at”,null:false
我使用SQLite数据库浏览器检查了我的开发数据库,该表还包含created_at和updated_at列。
我尝试了很多东西,比如手动设置created_at属性。如果我这样做,Rails告诉我,该模型没有create_at方法。
My Contact类没有任何特殊内容,只有belongs_to和两个has_many关联。我试图评论那些问题,看看问题是否存在,但事实并非如此。
我已经尝试停止服务器,删除sqlite数据库并运行rake db:setup。
首先问题出在我用来导入联系人的方法中。但后来我意识到它发生在那里,它发生在那个模型的任何地方,即使是为我生成的简单的crud rails scaffold。
问题在于它是断断续续的。有时它会发生,有时它不会发生。当我开始写它不起作用,但重新启动几次后,没有改变任何东西,它现在正在工作,我不知道多久。
我注意到,当它不起作用时,生成的SQL没有created_at和updated_at属性。所以我认为问题出在rails本身,而不是我的数据库或类似的东西。
我也尝试更新rails,所以我现在正在运行rails 4.2.7.1。
其他人有类似的问题吗? created_at不是间歇性地工作?
- 更新
我想我找到了导致错误的行:
contact.public_send("#{params[i.to_s]}=", row_value)
我正在使用它,因为我收到的参数如“0”=>“name”所以我知道应该设置哪个对象属性。 也许这与ActiveRecord如何处理created_at和使用public_send有关?