如何使用Ruby on Rails中的acts_as_votable销毁模型的所有投票

时间:2016-08-23 19:08:48

标签: ruby-on-rails ruby acts-as-votable

我已经为我的帖子实现了喜欢和不喜欢的功能,它们工作得很好。在这个阶段,我试图为我的应用程序提供一些管理员权限和权限。其中一个是让管理员能够重置一个帖子的投票。一个简单的按钮,点击后,投票计数将重置为零或更好地表示所有投票被销毁;是的。

该应用程序是一个最好的克隆。 这是pins_controller

class PinsController < ApplicationController
before_action :find_pin, only: [:show, :pinner, :edit, :update, :destroy, :upvote, :downvote]
before_action :authenticate_user!, except: [:index, :show]

def index
    @pins = Pin.all.order("created_at DESC")
end

def show 
end

def new
    @pin = current_user.pins.build
end

def create
    @pin = current_user.pins.build(pin_params)

    if @pin.save
        redirect_to @pin, notice: "Successfully created new Pin"
    else
        render 'new'
    end
end

def edit
end

def update
    if @pin.update(pin_params)
        redirect_to @pin, notice: "Pin was successfully updated!"
    else
        render 'edit'
    end
end

def destroy
    @pin.destroy
    redirect_to root_path
end

def upvote
    @pin.upvote_by current_user
    redirect_to :back
end

def downvote
    @pin.downvote_by current_user
    redirect_to :back
end

private

def pin_params
    params.require(:pin).permit(:title, :description, :image, :extlink)
end

def find_pin
    @pin = Pin.find(params[:id])
end

end

This is how the app looks

1 个答案:

答案 0 :(得分:0)

我不知道你的代码布局,但我会做的事情大致是将按钮传递给post_id参数到控制器,

post = Post.find(permitted_params[:post][:id])
Vote.where("post_id = ?", post.id).destroy_all