我试图遵循 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