ruby-on-rails - Ruby on Rails 在 db :create 期间忽略 UUID 列

标签 ruby-on-rails ruby postgresql activerecord

我正在尝试创建一个类似这样的模型:

职位名称:string companyid:uuid

但是,当我运行 db:create 时,它​​会创建带有“title”列的表,但会忽略“companyid”列。该应用程序当然会崩溃,因为 ActiveRecord 无法找到 companyid 列。如果我手动添加数据库列,该应用程序可以运行(所以我知道 RoR 知道如何处理这种数据类型)。

我希望我的数据库配置和迁移脚本能够正确运行。我正在使用 PostgreSQL 9.0 和 postgres-pg 适配器。

我需要做什么特别的事情吗?谢谢!

最佳答案

这应该有帮助:

Ruby on Rails: UUID as your ActiveRecord primary key

您的迁移无法正常进行,因为 UUID 不是受支持的类型。如果您查看链接,您会看到他们使用 UUID 作为列名,使用字符串作为类型。他们还禁用了 id 列并将 UUID:string 列设置为主键。

还有 simplified type在 Postgres 适配器中,这可能有助于了解它在手动创建列后为何起作用。虽然它只是将 UUID 映射到一个字符串。

如果遇到此问题的人想为 Rails 做出贡献,那么修复迁移以便他们可以处理 Postgres UUID 可能是一些不错的贡献,但考虑到 Postgres UUID 似乎并没有真正做太多事情,你的应用程序将不得不生成 ID,它们也可能只是字符串。

关于ruby-on-rails - Ruby on Rails 在 db :create 期间忽略 UUID 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4834866/

相关文章:

ruby-on-rails - Sidekiq 失败,出列 mongoid 连接超时,可能连接太多

当所有其他元素都工作时,JavaScript 无法通过页面上的 ID 定位某一特定元素

ruby-on-rails - 在 CSS 中传递 ruby​​ 标签

javascript - 在我的 Rails 投票系统中包含 Ajax/JS

sql - 将 ActiveRecord 查询重写为递归 SQL

python - Django: NotImplementedError: annotate() + distinct(fields) 未实现

postgresql - PostgreSQL 外键约束中的意外值

ruby-on-rails - 在 Active Record 级别设置 has_many 资源的默认顺序

ruby-on-rails - rake 分贝 :create - rake aborted - no rakefile found

Ruby (Rails) 变量作用域