gpt4 book ai didi

ruby-on-rails - 将名称添加到 Spree Devise 注册

转载 作者:太空宇宙 更新时间:2023-11-03 16:22:34 25 4
gpt4 key购买 nike

我正在尝试添加名字、姓氏和生日来设计 Spree 注册。

我已经安装了 gem

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

在应用程序 Controller 中定义了一个方法来运行之前的操作

   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

我做错了什么?我有不允许的参数。

最佳答案

这是基于以下帖子的答案:

Rails 4 - strong parameters concept involvement in 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

关于ruby-on-rails - 将名称添加到 Spree Devise 注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31481746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com