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
からこの行を削除し、あなたの 'デシベル/ schema.rb'を投稿することができますか? – mrlew
ええ、mrlewが正しいです - カスタムフィールドの移行を作成しなかったか、 'bundle exec rake db:migrate'を実行しなかったかもしれません –
schema.dbを追加しました –