我正在尝试创建一个类似这样的模型:
职位名称: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/