当我打电话保存时,我得到一个例外!在一个模型中 .

/ contacts / import_spreadsheet / 1 / import NOT NULL约束中的SQLite3 :: ConstraintException失败: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方法 .

我的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有关?