多态关联Rails:不同的primary_keys类型(id& uuid)

时间:2018-01-23 17:27:01

标签: ruby-on-rails ruby polymorphism uuid

我想定义一个多态表。我的问题是,一个表的primary_key的类型为uuid(string),另一个id(integer)。 我想可能model_able_idmodel_able_uuid根据model_type而变化,但我无法弄明白,它可能会破坏大量的多态的主动记录功能。

我想到的其他一些事情将是使用STI,但我仍然感到困惑,当然,我可以将ID迁移到uuids并且这样可以解决我的问题(但是我&#39 ; d而不是)。

2 个答案:

答案 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

我希望它有所帮助。