2017-01-31 12 views
1

新しいユーザーを作成すると、カスタム属性はnilになります。名前:Rails Deviseと名前属性を使用する場合はnil

application_controller.rb

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 :configure_permitted_parameters, if: :devise_controller? 

protected 

def configure_permitted_parameters 
    # devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit(:first_name, :last_name, :email, :password, :password_confirmation) } 
    # devise_parameter_sanitizer.permit(:account_update) { |u| u.permit(:first_name, :last_name, :email, :password, :password_confirmation, :current_password) } 
    devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name]) 
    devise_parameter_sanitizer.permit(:account_update, keys: [:first_name, :last_name]) 
end 
end 

User.rb

class User < ApplicationRecord 
# Include default devise modules. Others available are: 
# :confirmable, :lockable, :timeoutable and :omniauthable 
devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable, :confirmable 

validates :email, :password, :password_confirmation, :first_name, :last_name, presence: true 

attr_accessor :first_name, :last_name 
end 

seeds.rb

User.create(first_name: "User", last_name: "Help", email: "[email protected]", password: "password", password_confirmation: "password") 

出力:

#<User id: 5, email: "[email protected]", created_at: "2017-01-31 02:44:32", updated_at: "2017-01-31 02:44:32", first_name: nil, last_name: nil> 

どこが間違っていたのかわかりません... Deviseガイドを辿り、同様の問題(question)を持ついくつかのスタックオーバーフローの質問を読みました。私はattr_accessibleを無駄にしようとしました。

更新:DB/schema.rb

create_table "users", force: :cascade do |t| 
t.string "email",     default: "",  null: false 
t.string "encrypted_password",  default: "",  null: false 
t.string "reset_password_token" 
t.datetime "reset_password_sent_at" 
t.datetime "remember_created_at" 
t.integer "sign_in_count",   default: 0,   null: false 
t.datetime "current_sign_in_at" 
t.datetime "last_sign_in_at" 
t.inet  "current_sign_in_ip" 
t.inet  "last_sign_in_ip" 
t.string "type",     default: "Account", null: false 
t.datetime "created_at",         null: false 
t.datetime "updated_at",         null: false 
t.string "first_name" 
t.string "last_name" 
t.string "confirmation_token" 
t.datetime "confirmed_at" 
t.datetime "confirmation_sent_at" 
t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree 
t.index ["email"], name: "index_users_on_email", unique: true, using: :btree 
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree 
end 
+0

からこの行を削除し、あなたの 'デシベル/ schema.rb'を投稿することができますか? – mrlew

+0

ええ、mrlewが正しいです - カスタムフィールドの移行を作成しなかったか、 'bundle exec rake db:migrate'を実行しなかったかもしれません –

+0

schema.dbを追加しました –

答えて

0

モデル

attr_accessor :first_name, :last_name 
+1

これはうまくいきました!ありがとうございました! –

関連する問題