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

发布于 2024-10-15 00:28:13 字数 316 浏览 1 评论 0原文

我正在尝试创建一个具有以下内容的模型:

jobs title:string companyid:uuid

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

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

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

I'm trying to create a model with something like:

jobs title:string companyid:uuid

However, when I run db:create, it creates the table with the "title" column but just ignores the "companyid" column. The app of course crashes because ActiveRecord can't find the companyid column. If I add the DB column in manually, the app works (so I know RoR knows how to handle this data type)..

I'd like my DB provisioning and migration scripts to run correctly. I'm using PostgreSQL 9.0 and the postgres-pg adapter.

Anything special I need to do? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

顾挽 2024-10-22 00:28:13

这应该有帮助:

Ruby on Rails:UUID 作为您的 ActiveRecord 主键

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

Postgres 适配器中还有简化类型,可能对手动创建列后,了解其工作原理。虽然它只是将 UUID 映射到字符串。

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

This should help:

Ruby on Rails: UUID as your ActiveRecord primary key

Your migration isn't working because UUID isn't a supported type. If you look at the link you will see that they used UUID as a column name and string as the type. They also disabled the id column and set their UUID:string column to be the primary key.

There is also the simplified type in the Postgres Adapter that may be helpful for insight to why it works once you create the column manually. Though it just maps UUID to a string.

Fixing migrations so they could handle Postgres UUIDs could be some nice low hanging fruit for a contribution if someone having this issue wanted to contribute to Rails but given that Postgres UUIDs don't really appear to do much and your app will have to generate the IDs they might as well just be strings.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文