作者:圈儿丫头1986 | 来源:互联网 | 2023-02-01 23:58
Rails 5.1迁移为表的主键(changelog)生成BIGINT
(而不是).Integer
是否可以在配置中的某个位置禁用它?如果是这样,如何禁用它?
1> wyde19..:
根据pull请求,在配置级别上不可能这样做.但事实上,您可以强制id
为整数,如下所示:
create_table :users, id: :integer do
另一方面,您必须意识到更改也会影响references
行为,因此您应该小心:
t.references :orders, type: :integer
看到这是重复代码太多,我建议你为此编写助手,覆盖默认方法,或者非常激进并分叉数据库适配器,根据需要更改它.我会选择第二个选项:
为Migration[5.0]
和创建匿名模块ActiveRecord::ConnectionAdapters::TableDefinition
限定create_table
,add_reference
,add_belongs_to
在第一个,references
和belongs_to
在第二个(belongs_to
那些应该只是的别名references
)
在那些方法中只需修改选项并调用super.不要忘记处理签名!
将这些模块添加到各自的类中将为您处理所有事情.
你可以做得更好,也可以为他们的移除同行做这件事.