我有一个新模型,这是我的迁移:
def change
create_table :news do |t|
t.string :title
t.text :content
t.timestamps
end
end
字符串
这是我的模式
create_table "news", force: :cascade do |t|
t.string "title"
t.text "content"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
end
型
我也有一个这个模型的策略(来自pundit)和一个new_policy_test,但是,目前两者都是空的。
所以当通过Travis中的测试时,它告诉我:
NewPolicyTest#test_update:
ActiveRecord::NotNullViolation: PG::NotNullViolation: ERROR: null value in column "created_at" violates not-null constraint
DETAIL: Failing row contains (1, MyString, MyText, null, null).
型
并且对于NewPolicyTest#test_update、NewPolicyTest#test_scope、NewPolicyTest #test_show、NewPolicyTest#test_destroy、NewPolicyTest#test_create也是如此。
我该怎么做才能让Travis不给予我这个错误?
3条答案
按热度按时间qc6wkl3g1#
我在news.yml文件中添加了created_at和updated_at固定装置。
字符串
mwyxok5s2#
你应该这么做
t.timestamps
在您的迁移中,而不是
t.datetime“created_at”,精度:6,null:false t.datetime“updated_at”,precision:6,null:false
然后,当创建或更新记录时,它将自动填充字段。
hfsqlsce3#
发生这种情况的一个原因是当模型名称是复数时,如问题中所示(表
news
的模型News
)。解决方案是使用以下命令更新
config/initializers/inflections.rb
:字符串