2012-07-12 48 views
0

我試圖遵循railscasts教程,該教程解釋瞭如何處理管理員的質量分配錯誤和attr_accessible,但由於這有點過時,我正在嘗試關注內容rails API dock for 3.2.6 here管理員用戶的質量分配錯誤的問題

我想要做的就是讓管理員用戶能夠在更新操作中訪問建議模型的「獲勝」屬性。

這是我的建議模型,顯示當前的attr_accessible。

class Proposal < ActiveRecord::Base 
attr_accessible :email, :email_confirmation, :link, :name, :references, :short_description 

belongs_to :idea 

這裏是我的代碼爲Proposal控制器的更新操作。

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

看看這個Railscast。我有一個與Admin字段布爾類似的問題,並且不希望任何用戶通過發送curl帖子來規避安全性。如果用戶是管理員,那麼它使他們能夠訪問該字段,否則質量分配將保護該字段不被修改。

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

+0

我試圖實現,但即時得到這個錯誤:未定義的方法'管理員」 – sacshu 2012-07-12 17:18:02

+0

你的表中有一個名爲'admin'的布爾字段嗎? – kobaltz 2012-07-12 17:35:08