class PraiseTreadController < ApplicationController include MessagesHelper before_action :require_login before_action :validate_params, only: [:like, :unlike] before_action :find_object def like begin return normal_status(2, "你已点过赞了") if by_user_liked?(@obj, current_user) @praise_tread = @obj.praise_treads.build(user_id: current_user.id) @praise_tread.save! rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) raise ActiveRecord::Rollback end end def unlike begin return normal_status(2, "你还没有点过赞噢") unless by_user_liked?(@obj, current_user) @praise_treads = @obj.praise_treads.user_liker(current_user) @praise_treads.last.destroy! if @praise_treads.present? rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) raise ActiveRecord::Rollback end end private def find_object begin @obj = params[:object_type].strip.classify.constantize.find params[:object_id] rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) return end end def validate_params return normal_status(2, "缺少参数:object_id") if params[:object_id].blank? return normal_status(2, "缺少参数:object_type") if params[:object_type].blank? end end