我试图按照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
答案 0 :(得分:0)
查看此Railscast。我有一个与Admin字段布尔相似的问题,并且不希望任何用户通过发送curl post来规避安全性。如果用户是管理员,那么它使他们能够访问该字段,否则Mass Assignment将保护该字段不被修改。
http://railscasts.com/episodes/237-dynamic-attr-accessible?view=asciicast