Какой эффективный способ связать модели сообщений, комментариев, пользователей и голосования в Rails?

Прямо сейчас у меня есть три модели Post, Comment и User (используяразрабатывать) связаны следующим образом:

post.rb:

class Post < ActiveRecord::Base
  attr_accessible :title, :content, :total_votes

  validates :title,   :presence => true,
                      :length   => { :maximum => 30 },
                      :uniqueness => true
  validates :content, :presence => true,
                      :uniqueness => true

  belongs_to :user
  has_many :comments, :dependent => :destroy
end

comment.rb:

class Comment < ActiveRecord::Base
  attr_accessible :content, :user_id

  belongs_to :post, :counter_cache => true
  belongs_to :user
end

user.rb:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable,
         :omniauthable
  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :username

  validates_presence_of :username
  has_many :posts, :dependent => :destroy
  has_many :comments, :dependent => :destroy

  def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
    data = access_token.extra.raw_info
    if user = User.where(:email => data.email).first
      user
    else # Create a user with a stub password. 
      User.create!(:email => data.email, :password => Devise.friendly_token[0,20]) 
    end
  end
end

Я хочу добавить четвертую модель под названиемГолос со следующими условиями:

Обесообщений а такжеКомментарии можно проголосовать (вверх и вниз) и показать общую сумму / сумму.каждыйПочта будет иметь много голосов (вверх и вниз) и покажет общую сумму / сумму.каждыйкомментарий будет иметь много голосовИдентификатор пользователя должен храниться каждый раз, когда он или она голосует, чтобы я мог ограничить один голос на пользователя и показать идентификатор / имя проголосовавших пользователей (не уверен, где его хранить).

Теперь я не уверен, что это хороший повод для использованияполиморфные ассоциации и / иликеш счетчика.

Какой эффективный способ связать эти модели сообщений, комментариев, пользователей и голосования? (Если возможно, я бы хотел посмотреть, как будет выглядеть миграция)

Ответы на вопрос(1)

Ваш ответ на вопрос