Сильный параметров с рельсов и разработки
Я использую ветку rails 4.0 devise вместе с ruby 2.0.0p0 и Rails 4.0.0.бета1.
Это тот вопрос, где я проверяю, если я делаю это правильно, или если есть другие вещи, которые я должен делать. Я уверен, что многие люди, переходящие на Rails 4.0, сталкиваются с теми же проблемами (после поиска похожих вещей).
Я прочитал следующие ссылки:
- разработать и сильный Параметры
- https://gist.github.com/kazpsp/3350730
- https://github.com/plataformatec/devise/tree/rails4#strong-parameters
теперь с помощью devise я создал пользовательскую модель, я создал следующий контроллер, используя вышеуказанные gists (и обязательно включил его в свой файл маршрутов). Мои дополнительные параметры first_name и last_name.
class Users::RegistrationsController < Devise::RegistrationsController
def sign_up_params
params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation)
end
def account_update_params
params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :current_password)
end
private :sign_up_params
private :account_update_params
end
есть ли что-нибудь еще, что я должен делать? Это самое лучшее способ делать вещи с этого момента (с момента падения attr_accessor). Мои формы, похоже, работают нормально (как новые, так и обновленные). В сущности, сказал, чтобы использовать "resource_params", но всегда давал "параметры неразрешенные" ошибка в моем журнале работы сервера.
3 ответа:
Спасибо за последние обновления на ветке Rails4 Devise, на самом деле не нужно вставлять "resource_params".
Я создал совершенно новое приложение Rails4 и следовал основным шагам установки Devise, и мое приложение работает правильно, поэтому я думаю, что вы хорошо справились.
но есть модифицированный gist, который дает вам некоторые дополнительные детали с точки зрения разрешенных параметров, Если вам нужно:
источник: https://gist.github.com/bluemont/e304e65e7e15d77d3cb9
# controllers/users/registrations_controller.rb class Users::RegistrationsController < Devise::RegistrationsController before_filter :configure_permitted_parameters protected # my custom fields are :name, :heard_how def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_up) do |u| u.permit(:name, :heard_how, :email, :password, :password_confirmation) end devise_parameter_sanitizer.for(:account_update) do |u| u.permit(:name, :email, :password, :password_confirmation, :current_password) end end end
для рельсов 5, Devise 4 Используйте это:
class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name, :email, :password, :password_confirmation]) end end
он работает очень хорошо с добавлением модуля в
config/initializers
Сparameters
такойmodule DevisePermittedParameters extend ActiveSupport::Concern included do before_filter :configure_permitted_parameters end protected def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :email, :password, :password_confirmation) } end end DeviseController.send :include, DevisePermittedParameters