diff --git a/app/models/comment.rb b/app/models/comment.rb index 42b3b7577..485a0a56e 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -105,15 +105,15 @@ class Comment < ActiveRecord::Base do_not_bump_post == "1" end - def vote!(score) - numerical_score = score == "up" ? 1 : -1 + def vote!(val) + numerical_score = val == "up" ? 1 : -1 vote = votes.create(:score => numerical_score) if vote.errors.empty? if vote.is_positive? - increment!(:score) + update_column(:score, score + 1) elsif vote.is_negative? - decrement!(:score) + update_column(:score, score - 1) end end diff --git a/test/unit/comment_test.rb b/test/unit/comment_test.rb index bf14f67ae..0a35d3cb7 100644 --- a/test/unit/comment_test.rb +++ b/test/unit/comment_test.rb @@ -73,6 +73,17 @@ class CommentTest < ActiveSupport::TestCase assert_equal(c1.created_at.to_s, p.last_commented_at.to_s) end + should "not record the user id of the voter" do + user = FactoryGirl.create(:user) + post = FactoryGirl.create(:post) + c1 = FactoryGirl.create(:comment, :post => post) + CurrentUser.scoped(user, "127.0.0.1") do + c1.vote!("up") + c1.reload + assert_not_equal(user.id, c1.updater_id) + end + end + should "not allow duplicate votes" do user = FactoryGirl.create(:user) post = FactoryGirl.create(:post)