【问题标题】:Trouble with Mass-Assignment Error for Admin User管理员用户的批量分配错误问题
【发布时间】:2012-07-12 16:04:40
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

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

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

    【讨论】:

    • 我试图实现它,但我得到这个错误:未定义的方法`admin?'
    • 您的表中是否有一个名为 admin 的布尔字段?
    猜你喜欢
    • 2014-11-21
    • 1970-01-01
    • 2014-02-16
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2017-03-29
    相关资源
    最近更新 更多