Рельсы: рейтинг вверх или вниз, потерянный - PullRequest
0 голосов
/ 21 февраля 2012

В настоящее время я пытаюсь создать счетчик рейтинга с функцией увеличения или уменьшения. Меня смущает, стоит ли мне добавлять столбец в свое сообщение, чтобы показать, что человеку нравится сообщение, или создать отдельную модель для отображения счетчика рейтинга, но счетчик принадлежит сообщению. Что-то вроде Reddit или даже Stackoverflow. Кроме того, как мне начать с этого счетчика рейтинга, какой метод является правильным? Спасибо всем.

Редактировать - В настоящее время застрял на том, как двигаться дальше

Оценка

class Rating < ActiveRecord::Base
  attr_accessible :post_id, :user_id, :rating
  has_many :post
  has_many :users

  validates :post_id, presence: true

end

Рейтинговый контроллер

class RatingController < ApplicationController

  def create
    @post = Post.find(params[:id])
    @post.rating_count = @post.rating_count + 1
  end
end

Форма рейтинга

<%=form_tag @rating do %>
<%=submit_tag :Rating%>
<%end%>

1 Ответ

0 голосов
/ 21 февраля 2012

Вы должны создать отдельную модель, в которой будут храниться столбцы user_id, post_id и рейтинга.

class Post < ActiveRecord::Base
  has_many :ratings
end

class Rating < ActiveRecord::Base
  has_many :posts
  has_many :users
end

Тогда вы сможете получить весь рейтинг для соответствующего поста, рейтинг поста.для соответствующего пользователя и т. д.

Вы можете даже создать полиморфное отношение, чтобы обеспечить функциональность оценок для других моделей:

class Post < ActiveRecord::Base
  has_many :ratings, as: :rateable
end

class Rating < ActiveRecord::Base
  has_many :rateable, polymorphic: true
  has_many :users
end
...