Merge pull request #1991 from velesin/posts_controller_refactoring

PostsController refactoring.
This commit is contained in:
Robin Ward 2014-02-21 11:28:19 -05:00
commit 7562697834
1 changed files with 26 additions and 18 deletions

View File

@ -114,17 +114,12 @@ class PostsController < ApplicationController
def show def show
@post = find_post_from_params @post = find_post_from_params
@post.revert_to(params[:version].to_i) if params[:version].present? display_post(@post)
render_post_json(@post)
end end
def by_number def by_number
finder = Post.where(topic_id: params[:topic_id], post_number: params[:post_number]) @post = find_post_from_params_by_number
finder = finder.with_deleted if current_user.try(:staff?) display_post(@post)
@post = finder.first
guardian.ensure_can_see!(@post)
@post.revert_to(params[:version].to_i) if params[:version].present?
render_post_json(@post)
end end
def reply_history def reply_history
@ -201,16 +196,6 @@ class PostsController < ApplicationController
protected protected
def find_post_from_params
finder = Post.where(id: params[:id] || params[:post_id])
# Include deleted posts if the user is staff
finder = finder.with_deleted if current_user.try(:staff?)
post = finder.first
guardian.ensure_can_see!(post)
post
end
def find_post_revision_from_params def find_post_revision_from_params
post_id = params[:id] || params[:post_id] post_id = params[:id] || params[:post_id]
revision = params[:revision].to_i revision = params[:revision].to_i
@ -274,4 +259,27 @@ class PostsController < ApplicationController
!guardian.send("can_#{action}?", post) && post.user_id == current_user.id && post.edit_time_limit_expired? !guardian.send("can_#{action}?", post) && post.user_id == current_user.id && post.edit_time_limit_expired?
end end
def display_post(post)
post.revert_to(params[:version].to_i) if params[:version].present?
render_post_json(post)
end
def find_post_from_params
by_id_finder = Post.where(id: params[:id] || params[:post_id])
find_post_using(by_id_finder)
end
def find_post_from_params_by_number
by_number_finder = Post.where(topic_id: params[:topic_id], post_number: params[:post_number])
find_post_using(by_number_finder)
end
def find_post_using(finder)
# Include deleted posts if the user is staff
finder = finder.with_deleted if current_user.try(:staff?)
post = finder.first
guardian.ensure_can_see!(post)
post
end
end end