管理员用户的批量分配错误问题

时间:2012-07-12 16:04:41

标签: ruby-on-rails-3

我试图按照railscasts教程解释如何处理批量分配错误和管理员的attr_accessible,但由于这有点过时,我试图关注rails API中的内容停靠3.2.6 here

我想要做的就是让管理员用户能够访问"获胜" Update操作上Proposal Model的属性。

这是我的投标模型,显示当前的attr_accessible。

class Proposal < ActiveRecord::Base
attr_accessible :email, :email_confirmation, :link, :name, :references, :short_description

belongs_to :idea

这是我的提案控制器更新操作的代码。

class ProposalsController < ApplicationController

include ActiveModel::MassAssignmentSecurity
attr_accessible :email, :email_confirmation, :link, :name, :references, :short_description
attr_accessible :email, :email_confirmation, :link, :name, :references, :short_description, :winning, :as => :admin

def update
    @idea = Idea.find(params[:idea_id])
    @proposal = @idea.proposals.find(params[:id])

    if @proposal.update_attributes(proposal_params)
        redirect_to idea_proposals_url(@idea)
    else
        render 'edit'
    end
end

protected

    def proposal_params
        role = current_user.admin ? :admin : :default
        sanitize_for_mass_assignment(params[:proposal], role)
    end

1 个答案:

答案 0 :(得分:0)

查看此Railscast。我有一个与Admin字段布尔相似的问题,并且不希望任何用户通过发送curl post来规避安全性。如果用户是管理员,那么它使他们能够访问该字段,否则Mass Assignment将保护该字段不被修改。

http://railscasts.com/episodes/237-dynamic-attr-accessible?view=asciicast