使用管理员时会发生什么?

时间:2013-09-01 14:40:29

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

在Rails 3中,它基于3.1,所以它的种类老了,因为我使用3.2.12,当我试图分配管理员而没有让它免费进行质量分配时会引发错误,那就是因为3.1和3.2之间的差异如作者说。 所以最好使用以下内容,有什么区别?

控制器中的第一个方法

  def create
    @user = User.new(params[:user], :as => :admin)
    if @user.save
        flash[:notice] = "User has been created."
        redirect_to admin_users_path
    else
        flash[:alert] = "User has not been created."
        render :action => "new"
    end
  end

和模型

 attr_accessible :email, :password, :admin, :as => :admin

控制器中的第二种方法

   def create
    @user = User.new(params[:user], :without_protection => true)
    @user.admin = params[:user][:admin] == "1"
    if @user.save
        flash[:notice] = "User has been created."
        redirect_to admin_users_path
    else
        flash[:alert] = "User has not been created."
        render :action => "new"
    end
  end

不在模型中添加上面的行

哪一个会保护免受大规模分配或两者都是免费的?

1 个答案:

答案 0 :(得分:1)

attr_accessible:without_protection => true都可用于在定义模型的属性上进行质量分配。

  

所以最好使用以下内容,有什么区别?

要回答这个问题,我认为使用attr_accessible会更好,因为您可以准确定义您希望进行质量分配的属性与打开所有属性:without_protection => true相比较在您的模型中进行批量分配。

通常,如果你确切地知道用户输入是什么,那么传递:without_protection => true是可以的,例如播种数据时但是对于来自表单(用户输入)的输入,您希望准确指定批量分配所允许的内容。

希望这有帮助。

<强>更新

在以下声明中,您向as提供的attr_accessible选项确认仅当用户为email, password and admin时才允许属性admin

attr_accessible :email, :password, :admin, :as => :admin