ActiveModel:创建新用户时的ForbidenAttributesError

ActiveModel:创建新用户时的ForbidenAttributesError

我在Ruby中有这个模型,但是它抛出了一个ActiveModel::ForbiddenAttributesError

class User < ActiveRecord::Base
  attr_accessor :password
  validates :username, :presence => true, :uniqueness => true, :length => {:in => 3..20}
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence: true, :uniqueness => true, format: { with: VALID_EMAIL_REGEX }

  validates :password, :confirmation => true
  validates_length_of :password, :in => 6..20, :on => :create

  before_save :encrypt_password
  after_save :clear_password  def encrypt_password    if password.present?
      self.salt = BCrypt::Engine.generate_salt      self.encrypted_password= BCrypt::Engine.hash_secret(password, salt)
    end
  end

  def clear_password    self.password = nil
  endend

当我运行这个动作

  def create    @user = User.new(params[:user])
    if @user.save
      flash[:notice] = "You Signed up successfully"
      flash[:color]= "valid"
    else
      flash[:notice] = "Form is invalid"
      flash[:color]= "invalid"
    end
    render "new"
  end

在……上面ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux].

你能告诉我如何消除这个错误或建立一个适当的用户登记表吗?


阿波罗的战车
浏览 557回答 3
3回答

大话西游666

如果使用ActiveAdmin,请不要忘记在模型寄存器块中也有一个许可证_params:ActiveAdmin.register&nbsp;Api::V1::Person&nbsp;do &nbsp;&nbsp;permit_params&nbsp;:name,&nbsp;:address,&nbsp;:etcend这些需要与控制器中的设置一起设置:def&nbsp;api_v1_person_params&nbsp;&nbsp;params.require(:api_v1_person).permit(:name,&nbsp;:address,&nbsp;:etc)end否则,您将得到错误:ActiveModel::ForbiddenAttributesError
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby