管理者向けの一括割り当てエラーとattr_accessibleの処理方法を説明するrailscastsチュートリアルに従おうとしていましたが、それは少し時代遅れだったので、ここで3.2.6のrailsAPIドックにあるものに従おうとしています。
私がやりたいのは、管理者ユーザーが更新アクションで提案モデルの「勝ち」属性にアクセスできるようにすることだけです。
これが現在の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