2012-07-12 70 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