我的数据模型通常要求它们的主键是另一种类型而不仅仅是一个vanilla自动递增整数。但是,Rails / AR并不完全清楚如何将其更改为默认值。
如何在Activerecord中使用除整数之外的其他类型作为主键?
答案 0 :(得分:1)
警告:除了Rails Master(尚未发布 - PR#18228),schema.rb
将不记得列类型,因此该功能暂时无法使用。解决了here。
我今天正在查看文档,因为这是我长期以来一直在努力的事情,我遇到了t.primary_key
:
primary_key(name, type = :primary_key, options = {})
将主键定义附加到表定义。可以多次调用,但这可能不是一个好主意。
因此,您只需使用id: false
指定迁移,并使用您选择的名称和类型指定主键:
class CreateTags < ActiveRecord::Migration
def change
create_table :tags, id: false do |t|
t.primary_key :name, :string
t.timestamps null: false
end
# Alternative awkward-er syntax
# create_table "tags", primary_key: "name", id: "string" do
end
end
您的模型甚至会自动推断架构中的主键列名称。耶!