gpt4 book ai didi

ruby-on-rails - 如何使用不唯一的 "association_type"和 "association_id"在 Rails 中索引多态表

转载 作者:数据小太阳 更新时间:2023-10-29 06:42:27 26 4
gpt4 key购买 nike

我有一个名为“投票”的多态表,其中包含来自答案和问题的投票。

投票

user_id     voteable_id    voteable_type      value

1 2 Answer 1
2 2 Answer 1

在这种情况下,id = 2 的答案有两票赞成。

问题是:如何索引这个表?

第一种方法:

add_index :votes, [:voteable_id, :voteable_type]

这是行不通的,因为重复的键值会违反唯一约束

第二种方法:

 add_index :votes, :voteable_id, 
add_index :votes, :voteable_type

我猜这个不会有太多性能,因为同时对 id 和 type 进行复合查询。

第三种方法:

add_index :votes, [:user_id, :voteable_id, :voteable_type]

最后一张好看吗?三列索引是否过多?

谢谢

最佳答案

你的第一种方法是正确的

add_index :votes, [:voteable_id, :voteable_type]

只要您不添加 :unique => true,它就不会是唯一的。而且你不应该让它独一无二,因为这将导致每个投票者只能投一票。作为Tashos在评论中指出。

第三种方法也可以,在这里你可以使用unique约束,所以每个用户只能对每个投票表投票一次。

关于ruby-on-rails - 如何使用不唯一的 "association_type"和 "association_id"在 Rails 中索引多态表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13477365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com