SORU
27 HAZİRAN 2013, PERŞEMBE


::ActiveModel yeni kullanıcı oluştururken ForbiddenAttributesError

Ruby bu model var ama ActiveModel::ForbiddenAttributesError atar

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
  end
end

bu eylem çalıştırdığımda

  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].

Bu hata kurtulmak ya da uygun bir kullanıcı kayıt formu kurmak için nasıl bana söyleyebilir misiniz?

Şimdiden teşekkürler.

CEVAP
27 HAZİRAN 2013, PERŞEMBE


Raylar 4 kullanıyorsunuz sanırım. Eğer öyleyse, gerekli parametreleri gerektiği gibi işaretlenmiş olmalıdır.

Bu şekilde yapmak isteyebilirsiniz:

class UsersController < ApplicationController

  def create
    @user = User.new(user_params)
    # ...
  end

  private

  def user_params
    params.require(:user).permit(:username, :email, :password, :salt, :encrypted_password)
  end
end

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Wills

    David Wills

    31 Aralık 2007
  • Jeremy Gallman

    Jeremy Gallm

    11 NİSAN 2012
  • thenewboston

    thenewboston

    4 ŞUBAT 2008