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

时间:2011-01-29 03:00:23

标签: ruby-on-rails ruby postgresql activerecord

我正在尝试创建一个类似于:

的模型

职位名称:字符串companyid:uuid

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

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

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

1 个答案:

答案 0 :(得分:4)

这应该有所帮助:

Ruby on Rails: UUID as your ActiveRecord primary key

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

Postgres适配器中还有simplified type可能有助于在手动创建列后了解其工作原理。虽然它只是将UUID映射到字符串。

修复迁移,以便他们可以处理Postgres UUID可能是一个很好的低水平的贡献,如果有这个问题的人想要贡献Rails,但鉴于Postgres UUID似乎没有做太多,你的应用将不得不生成他们可能只是字符串的ID。