在Rails4中扩展大数据

时间:2014-11-07 07:01:34

标签: ruby-on-rails ruby-on-rails-4

我正在制作Q& A网站。我现在有三种型号:

Question
Answer
User

问题和答案都可以投票,因此我需要一种方法来存储投票给模型的人,以防止同一用户对一个模型进行多次投票。

创建投票模型会是一个好主意吗?其中,question_id或answer_id在每个中都是空的。我担心这会造成大量垃圾并减慢应用程序的速度。

我的另一个想法是将user_id存储在Answer和Question中的哈希值中。 如果用户已经存在于哈希中,则会阻止投票。或者将答案和问题ID存储在用户中。

Rails4快速的方法是什么,但在模型中存储大多数用户交互。什么可以是KISS,DRY和快速?

1 个答案:

答案 0 :(得分:1)

如果您有Vote可以参考的多个模型,则应使用polymorphic模型。

class Vote < ActiveRecord::Base
  belongs_to :voteable, polymorphic: true
end

class Question < ActiveRecord::Base
  has_many :votes, as: :voteable
end

class Answer < ActiveRecord::Base
  has_many :votes, as: :voteable
end

如果你在关联上使用索引,我认为你不必担心速度很长一段时间。只需将此代码段放入迁移中,您就可以开始使用了!

add_index :votes, [:voteable_name, :voteable_id]