0

我试图遵循 railscasts 教程,该教程解释了如何为管理员处理批量分配错误和 attr_accessible,但由于这有点过时,我正在尝试遵循 3.2.6 的 rails API 坞站中的内容

我要做的就是让管理员用户能够访问更新操作中提案模型的“获胜”属性。

这是我的提案模型,显示了当前的 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
4

1 回答 1

0

看看这个 Railscast。我在 Admin 字段 Boolean 上遇到了类似的问题,并且不希望任何用户通过发送 curl 帖子来规避安全性。如果用户是管理员,那么它使他们能够访问该字段,否则 Mass Assignment 将保护该字段不被修改。

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

于 2012-07-12T16:39:18.067 回答