2013-08-11 1 views
0

Я добавил свое поле имени пользователя в мою модель User, но, похоже, его разработка не распознается при создании новой записи пользователя. Я заполняю адрес электронной почты, имя пользователя и пароль, но я получаю ошибку проверки: «Имя пользователя не может быть пустым», хотя у моего параметра hash явно есть это. Мне не нужно, чтобы люди входили в систему со своим именем пользователя, но мне просто нужно, чтобы они установили его при регистрации для новой учетной записи.Devise: Я добавил поле имени пользователя, но оно не работает

Я использую рельсы 4, и я применил сильные параметры, упомянутые в github devitation для README.

Вот мой user.rb файл

devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 

before_save { |user| user.username = user.username.downcase } 

validates_presence_of :username 
validates_uniqueness_of :username, case_sensitive: false 

Вот мой application_controller.rb файл

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :exception 

    before_filter :configure_permitted_parameters, if: :devise_controller? 

protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :username, :password, :password) } 
    end 
end 

Я также добавил мой registrations/new.html.erb файл:

<div><%= f.label :username %> 
<%= f.text_field :username %></div> 

Вот что мой PARAMS хеш, когда Я представляю новую запись пользователя:

user: !ruby/hash:ActionController::Parameters 
    username: David 
    email: [email protected] 
    password: foobar12 
    password_confirmation: foobar12 

Любые идеи?

+2

Маленькая ремарка 'user.username = user.username.downcase' можно переписать в' 'user.username.downcase – hawk

+0

Nice! Спасибо за совет. – DavidVII

ответ

2

Как оказалось, мои сильные параметры выше были неправильными.

Я установил ее, изменив его следующим образом:

devise_parameter_sanitizer.for(:sign_up) do |u| 
    u.permit(:email, :username, :password, :password_confirmation) 
end 
Смежные вопросы