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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多态关联Rails:不同的primary_keys类型(id&uuid)相关的知识,希望对你有一定的参考价值。

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

我想到的其他一些事情将是使用STI,但我仍然感到困惑,当然,我可以将id迁移到uuids,这样可以解决我的问题(但我不愿意)。

答案

我有完全相同的问题。我的解决方案将_id字段的类型修改为字符串。

def change
  add_reference :ratings, :rater, polymorphic: true, index: true
  change_column :ratings, :rater_id, :string
end

我希望它有所帮助。

另一答案

面对同样的问题,还没有正式的解决方案,这两个问题在rails repo中是开放的:

https://github.com/rails/rails/issues/33407

https://github.com/rails/rails/issues/33525

a suggestion in one of these issues,它对我不起作用(它生成了两个连接,默认的一个由rails生成导致失败,一个我定义)。

我最终没有使用关联,我定义了一种方法来使用自定义查询正确获取实际记录。我不需要dependent: destroy,否则我也可以定义一个before_destroy方法。

希望它可以帮助某人。

以上是关于多态关联Rails:不同的primary_keys类型(id&uuid)的主要内容,如果未能解决你的问题,请参考以下文章

Rails在使用多态关联时组合和排序ActiveRecord关系

Rails 关联帮助 - 我是不是使用多态关联?

Rails 5 - 使用多态关联 - 渲染视图

rails 获取多态类的所有关联类

iOS Core Data:为 Rails 多态关联设置关系的方法

与多态表的一对多条件关联:Rails