0

我尝试学习新东西并将 Ahoy gem 用于我的私人项目。在进行在线研究时,我遇到了一个使用 Rails 4.2 和 Ahoy 1.6 的 repo,一件事情让我印象深刻。然后我开始用谷歌搜索,似乎这不仅仅是一个单一的回购问题。

class CreateVisits < ActiveRecord::Migration
  def change
    create_table :visits, id: false do |t|
      t.uuid :id, default: nil, primary_key: true
(...)

为便于阅读,省略了其余代码

我错过了什么,还是那些相互排斥的线?(更不用说默认情况下主键为零?)

我在本地运行了几乎相同的迁移(没有 Ahoy gem,更改了表名),我得到了漂亮的 db/schema.rb(乍一看 - 还没有错误),但当然当我尝试创建新对象时,我命中ActiveRecord::NotNullViolation: PG::NotNullViolation: ERROR: null value in column "id" violates not-null constraint错误

在我看来,我会写这样的东西来让它工作,还是我在这里错过了一些非常重要的东西,阻止我在数据库中持久化一个对象?

class CreateVisits < ActiveRecord::Migration
  def change
    create_table :visits do |t|
      t.uuid :id, primary_key: true
(...)
4

1 回答 1

0

似乎这件事与此 Gem 无关,而是与其他开发人员在 Rails 迁移之外运行迁移并且不让任何人知道。这在环境之间造成了一些混乱。

于 2019-09-17T14:54:14.517 回答