Rails 5.1
を実行しようとすると、エラーメッセージを取得する:私のuser.rbのモルデ私は私が持っている私のseeds.rbファイルでは、シードスクリプト
user = User.new(
:email =>'[email protected]',
:password =>'xK#986754',
:password_confirmation =>'xK#986754',
:first_name =>'John',
:last_name =>'Smith',
:role => 1
:approved => true
)
user.skip_invitation
user.save
、私が持っている:
class User < ActiveRecord::Base
enum role: [:user, :vip, :admin]
after_initialize :set_default_role, :if => :new_record?
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :invitable, :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessor :email, :password, :first_name, :last_name, :role, :approved
validates :email, uniqueness: true, presence: true
validates :first_name, presence: true
validates :last_name, presence: true
validates :role, presence: true
def set_default_role
self.role ||= :user
end
end
私の移行ファイルでは、私は:
class DeviseCreateUsers < ActiveRecord::Migration[5.1]
def change
create_table :users do |t|
t.string :first_name, null: false
t.string :last_name, null: false
t.integer :role, null: false
t.string :email, null: false
## Approved
t.boolean :approved, :default => 0, :null => false
私はシードファイルを実行しようとすると、私は次のエラーメッセージ:
ActiveRecord::NotNullViolation: Mysql2::Error: Field 'first_name' doesn't have a default value: INSERT INTO `users` (`approved`, `created_at`, `updated_at`) VALUES (1, '2017-10-23 02:23:36', '2017-10-23 02:23:36')
が、私は明らかに工夫宝石
任意のアイデアを使用していますか?
ヒント:そこにいるフィールドには 'attr_accessor'とは何ですか?これにより、基礎となるデータベース属性へのアクセスがブロックされます。 – tadman