Сильный параметров с рельсов и разработки


Я использую ветку rails 4.0 devise вместе с ruby 2.0.0p0 и Rails 4.0.0.бета1.

Это тот вопрос, где я проверяю, если я делаю это правильно, или если есть другие вещи, которые я должен делать. Я уверен, что многие люди, переходящие на Rails 4.0, сталкиваются с теми же проблемами (после поиска похожих вещей).

Я прочитал следующие ссылки:

теперь с помощью 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 53

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