多态关联Rails:不同的primary_keys类型(id&uuid)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多态关联Rails:不同的primary_keys类型(id&uuid)相关的知识,希望对你有一定的参考价值。
我想定义一个多态表。我的问题是,一个表的primary_key是uuid(string)
类型,另一个是id(integer)
。我想可能有一个model_able_id
和model_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关系