我尝试按照railscasts教程来为管理员解释如何处理批量赋值错误和attr_accessible,但由于这有点过时了,我正在尝试学习3.2.6 here的rails API dock中的内容。
我所要做的就是允许管理员用户在更新操作中访问Proposal Model的"winning“属性。
这是我的提案模型,显示了当前的attr_accessible。
class Proposal < ActiveRecord::Base
attr_accessible :email, :email_confirmation, :link, :name, :references, :short_description
belongs_to :idea以下是Proposal Controller的Update操作的代码。
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发布于 2012-07-13 00:39:18
看看这个Railscast。我在Admin field Boolean中也遇到了类似的问题,我不希望任何用户通过发送curl post来规避安全性。如果用户是管理员,那么它给了他们访问该字段的能力,否则批量分配将保护该字段不被修改。
http://railscasts.com/episodes/237-dynamic-attr-accessible?view=asciicast
https://stackoverflow.com/questions/11455961
复制相似问题