我正在清理 rails 5 应用程序的控制器,并且我创建了一个服务来标记帖子。不幸的是,由于将acts_as_votable 辅助方法移动到服务中,所有标志都不起作用。任何想法为什么这不起作用?
应用程序/服务/flag_service.rb
class FlagService
def initialize(params)
@current_user = params[:current_user]
@post = params[:post]
end
def process
if previous_vote?
@post.vote_by :voter => @current_user, :vote_scope => 'flag'
elsif !previous_vote?
@post.unvote_by @current_user, :vote_scope => 'flag'
else
nil
end
end
private
def previous_vote?
@current_user.voted_for? @post, vote_scope: 'flag'
end
end
应用程序/控制器/bursts_controller.rb
...
def flag
if FlagService.new({current_user: current_user, post: @post}).process
render(status: 201, json: @category.as_json({:only => [:id, :status, :name, :description, :slug, :title] }))
else
render(status: 400, json: @category.errors)
end
end
...