我想定义一个多态表。我的问题是,一个表的primary_key的类型为uuid(string)
,另一个id(integer)
。
我想可能model_able_id
和model_able_uuid
根据model_type
而变化,但我无法弄明白,它可能会破坏大量的多态的主动记录功能。
我想到的其他一些事情将是使用STI,但我仍然感到困惑,当然,我可以将ID迁移到uuids并且这样可以解决我的问题(但是我&#39 ; d而不是)。
答案 0 :(得分:1)
在选项中指定(多态)外键的类型。如果需要,将:string
更改为:uuid
。
create_table :table_name do |t|
t.references :target, type: :string, polymorphic: true, null: false
end
然后可接受字符串和整数target_id
。
检查API docs。
答案 1 :(得分:0)
我有完全相同的问题。我的解决方案将_id
字段的类型修改为字符串。
def change
add_reference :ratings, :rater, polymorphic: true, index: true
change_column :ratings, :rater_id, :string
end
我希望它有所帮助。