【问题标题】:How to turn off BIGINT primary keys in Rails 5.1如何在 Rails 5.1 中关闭 BIGINT 主键
【发布时间】:2017-06-06 12:37:52
【问题描述】:

Rails 5.1 迁移为表的主键 (changelog) 生成 BIGINT(而不是 Integer)。

是否可以在配置中的某处禁用它?如果是,如何禁用它?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-5.1


    【解决方案1】:

    根据pull request,不,这在配置级别是不可能的。 但实际上,您可以强制 id 为整数,如下所示:

    create_table :users, id: :integer do
    

    另一方面,您必须意识到更改也会影响references 的行为,因此您应该小心这些:

    t.references :orders, type: :integer
    

    鉴于这是太多重复的代码,我建议您为此编写帮助程序,覆盖默认方法,或者非常激进并分叉您的数据库适配器,随意更改它。我会选择第二个选项:

    1. Migration[5.0]ActiveRecord::ConnectionAdapters::TableDefinition 创建匿名模块
    2. 在第一个中定义create_tableadd_referenceadd_belongs_to,在第二个中定义referencesbelongs_tobelongs_to应该只是references的别名)
    3. 在这些方法中,只需修改选项并调用 super。不要忘记处理签名!
    4. 将这些模块添加到它们各自的类将处理 一切为您服务。
    5. 您可以做得更好,也可以为他们的移除对应物执行此操作。

    【讨论】:

    • 我的错,我查看了代码但没有阅读整个讨论页面。我会更新我的答案。
    • create_table :users, id: :integer do - 这就是我想要的。谢谢!
    • @maicher 不要忘记references 到那张桌子。
    • @wyde19 当然。明白了!
    猜你喜欢
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 2013-07-28
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多