Добавление имени в Spree Devise регистрация

Я пытаюсь добавить имя, фамилию и дату рождения, чтобы придумать регистрацию в Spree.

Я установил драгоценный камень

gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: '3-0-stable'

Создана миграция:

    class AddFieldsToSpreeUsers < ActiveRecord::Migration
      def change
        add_column :spree_users, :name, :string
        add_column :spree_users, :surname, :string
        add_column :spree_users, :birthdate, :time
      end
    end

Создана новая форма для добавления полей app/views/spree/shared/_user_form.html.erb

Определен метод в контроллере приложения для запуска с действием перед

   class ApplicationController < ActionController::Base
      # Prevent CSRF attacks by raising an exception.
      # For APIs, you may want to use :null_session instead.
      protect_from_forgery with: :exception

      before_action :set_locale
      before_filter :configure_permitted_parameters, if: :devise_controller?

      def set_locale
        I18n.locale = params[:locale] || I18n.default_locale
      end

    protected

      def configure_permitted_parameters
        devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :name, :surname, :birthdate) }
        devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:email, :password, :name, :surname, :birthdate) }
      end

   end

И я до сих пор не получаю записей в базе данных

<Spree::User id: 2, encrypted_password:   "bdd86072513f789da5a395080e3d16e28c96cfe5e3aaea105b...",
... , name: nil,  surname: nil, birthdate: nil> 

Вот консольный журнал для действия добавления формы пользователя:

Started POST "/signup" for ::1 at 2015-07-21 09:52:08 -0500
Processing by Spree::UserRegistrationsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"+9EoKHj9fkHqKF8TRtlcfIYt5+QPuPa1ynmWVifUNY3luiCDpiBP9z2VV/uMAH1JP0CCg7gwG2gu7vO1TaSacw==", "spree_user"=>{"name"=>"Christophe", "surname"=>"Mysurname", "email"=>"email@gmail.com", "password"=>"[FILTERED]", "birthdate"=>"1978-11-11"}, "commit"=>"Create"}
 Unpermitted parameters: name, surname, birthdate
 (0.6ms)  BEGIN

Что я делаю неправильно? У меня есть недопустимые параметры.

2 ответа

Вот ответ, основанный на следующем посте:

Rails 4 - сильные параметры концепции вовлечения в spree-2.1

Мне удалось добавить имя, фамилию и дату рождения, добавив строку ниже в config/initializers/spree.rb

Spree::PermittedAttributes.user_attributes.push :name, :surname, :birthdate

Я также изменил дату рождения с типа времени на тип даты со следующей миграцией:

class ChangeBirthdateFromTimeToDate < ActiveRecord::Migration

  def up
    remove_column :spree_users, :birthdate, :time
    add_column :spree_users, :birthdate, :date
  end

  def down
    remove_column :spree_users, :birthdate, :date
    add_column :spree_users, :birthdate, :time
  end
end

Вы можете запустить команду в терминале:

rails generate migration add_name_to_spree_users name:string

rails generate migration add_sur_name_to_spree_users sur_name:string

rails generate migration add_birthdate_to_spree_users birthdate:date

rake db:migrate

чем внутри конфиг / инициализаторы / spree.rb

Spree:: PermittedAttributes.user_attributes.push: name,: sur_name,: birthdate

чем перезагрузить ваш сервер

Другие вопросы по тегам