ActiveRecord::NotNullViolation: PG::NotNullViolation: ERROR: null value in column "created_at" violates not-null constraint

ActiveRecord::NotNullViolation: PG::NotNullViolation: ERROR: null value in column "created_at" violates not-null constraint

我有一个新模型,这是我的迁移:

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

我也有这个模型的政策(来自专家)和 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 不给我这个错误?

你应该

t.timestamps

在您的迁移中而不是

t.datetime "created_at", 精度: 6, null: false t.datetime "updated_at", 精度: 6, null: false

然后它会在创建或更新记录时自动填充字段。

我将 created_at 和 updated_at 灯具添加到我的 news.yml 文件中。

one:
  title: MyString
  content: MyText
  created_at: <%= 5.day.ago.to_s(:db) %>
  updated_at: <%= 5.day.ago.to_s(:db) %>