allow more forum posts to be voted on (fixes #3677)

This commit is contained in:
Albert Yi
2018-04-27 16:18:18 -07:00
parent 06e7dbb8e4
commit d4b1782431
3 changed files with 19 additions and 1 deletions

View File

@@ -6,6 +6,8 @@ class ForumPost < ApplicationRecord
belongs_to_updater
belongs_to :topic, :class_name => "ForumTopic"
has_many :votes, class_name: "ForumPostVote"
has_one :tag_relationship
has_one :bulk_update_request
before_validation :initialize_is_deleted, :on => :create
after_create :update_topic_updated_at_on_create
after_update :update_topic_updated_at_on_update_for_original_posts
@@ -129,6 +131,11 @@ class ForumPost < ApplicationRecord
end
end
def votable?
# shortcut to eliminate posts that are probably not tag change requests
body.match(/->/) && (bulk_update_request.present? || tag_relationship.present?) && created_at >= TagRelationship::EXPIRY.days.ago
end
def voted?(user, score)
votes.where(creator_id: user.id, score: score).exists?
end

View File

@@ -44,7 +44,7 @@
<% else %>
<li><%= link_to "Permalink", forum_post_path(forum_post) %></li>
<% end %>
<% if forum_post.is_original_post?(original_forum_post_id) %>
<% if forum_post.votable? %>
<ul class="votes" id="forum-post-votes-for-<%= forum_post.id %>">
<%= render "forum_post_votes/list", votes: forum_post.votes, forum_post: forum_post %>
</ul>

View File

@@ -14,6 +14,17 @@ class ForumPostTest < ActiveSupport::TestCase
CurrentUser.ip_addr = nil
end
context "#votable?" do
setup do
@post = FactoryBot.build(:forum_post, :topic_id => @topic.id, :body => "[[aaa]] -> [[bbb]]")
@tag_alias = FactoryBot.create(:tag_alias, forum_post: @post)
end
should "be true for a post associated with a tag alias" do
assert(@post.votable?)
end
end
context "that mentions a user" do
context "in a quote block" do
setup do