Luc*_*cas 11 ruby database polymorphism ruby-on-rails
我有一个名为"Votes"的多态表,其中有来自Answers和Questions的投票.
投票
user_id voteable_id voteable_type value
1 2 Answer 1
2 2 Answer 1
Run Code Online (Sandbox Code Playgroud)
在这种情况下,id = 2的答案有两票.
问题是:如何索引此表?
第一种方法:
add_index :votes, [:voteable_id, :voteable_type]
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为重复键值将违反唯一约束
第二种方法:
add_index :votes, :voteable_id,
add_index :votes, :voteable_type
Run Code Online (Sandbox Code Playgroud)
由于同时对id和type进行复合查询,我认为这个性能不会太高.
第三种方法:
add_index :votes, [:user_id, :voteable_id, :voteable_type]
Run Code Online (Sandbox Code Playgroud)
这是最后一个好吗?是否有三列要编入索引?
谢谢
jig*_*fox 34
你的第一种方法是正确的
add_index :votes, [:voteable_id, :voteable_type]
Run Code Online (Sandbox Code Playgroud)
只要你不添加:unique => true它就不会是唯一的.而且你不应该让它独一无二,因为这将导致每个投票只能投一票.正如塔索斯在评论中所述.
第三种方法也可以,在这里你可以使用一个unique约束,所以每个用户只能投票一次.
| 归档时间: |
|
| 查看次数: |
7319 次 |
| 最近记录: |