Невозможно добавить настраиваемые поля для создания модели в Ruby on Rails. Частная ошибка метода
Сгенерированная модель пользователя с использованием драгоценного камня "Разработка".
Попытка добавить атрибут 'username'.
Следуя официальной документации, теперь мой ApplicationController выглядит следующим образом:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
before_action :authenticate_user!
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:account_update, keys: [:username])
devise_parameter_sanitizer.permit(:sign_in, keys: [:username])
devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
end
end
Когда я пытаюсь перейти на страницу обновления учетной записи, я получаю следующую ошибку:
NoMethodError in Devise::RegistrationsController#edit
private method `permit' called for #Devise::ParameterSanitizer:0x007f13396cf180>
Что здесь может быть неправильным?
Ответы
Ответ 1
В соответствии с этим ответом вы также можете сделать следующее:
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_in) << :username
devise_parameter_sanitizer.for(:sign_up) << :username
devise_parameter_sanitizer.for(:account_update) << :username
end
Ответ 2
Первое, что вам нужно знать, это ваша версия для разработки
поэтому проверьте установленную версию на вашем приложении rails, выполнив следующую команду:
cat Gemfile.lock | grep devise
показывает, какая версия, установленная в вашем приложении rails, выглядит так:
devise (= 3.1.0)
Если версия вашего проектa >= 4.0.0.rc1
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up) do |user_params|
user_params.permit({ roles: [] }, :email, :password, :password_confirmation)
end
end
для версии < 4.0.0.rc1
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_in) << :username
devise_parameter_sanitizer.for(:sign_up) << :username
devise_parameter_sanitizer.for(:account_update) << :username
end