當我嘗試創建一個新設計的用戶,我得到的錯誤:如何在創建新Devise用戶時保存reset_password_token?
ActiveRecord::RecordNotUnique: TinyTds::Error: Cannot insert duplicate key row in object 'dbo.admin_users' with unique index 'index_admin_users_on_reset_password_token'. The duplicate key value is (NULL)
這是因爲索引「index_admin_users_on_reset_password_token」需要在reset_password_token領域獨特的價值觀,以及每一個被創建的用戶與提交nil
該字段中的值,這意味着每一個記錄都不會是唯一的。
當我嘗試手動提交該字段中的值時,它會自動省略。
user = AdminUser.new(email: "[email protected]", password: "integracore", reset_password_token:"french fries", reset_password_sent_at: Time.now)
#<AdminUser:0x000000075303e8
# id: nil,
# email: "[email protected]",
# encrypted_password: "$2a$10$cm9AmPuwEey4hDFMUPMMkeD3bLPozT47VLdmg9kDlDRKBXh93Hn0C",
# reset_password_token: "french fries",
# reset_password_sent_at: Thu, 03 Sep 2015 19:42:25 UTC +00:00,
# remember_created_at: nil,
# sign_in_count: 0,
# current_sign_in_at: nil,
# last_sign_in_at: nil,
# current_sign_in_ip: nil,
# last_sign_in_ip: nil,
# created_at: nil,
# updated_at: nil>
user.save
ActiveRecord::RecordNotUnique: TinyTds::Error: Cannot insert duplicate key row in object 'dbo.admin_users' with unique index 'index_admin_users_on_reset_password_token'. The duplicate key value is().: EXEC sp_executesql N'INSERT INTO [admin_users] ([email], [encrypted_password], [created_at], [updated_at]) OUTPUT INSERTED.[id] VALUES (@0, @1, @2, @3)', N'@0 nvarchar(4000), @1 nvarchar(4000), @2 datetime, @3 datetime', @0 = N'[email protected]', @1 = N'$2a$10$cm9AmPuwEey4hDFMUPMMkeD3bLPozT47VLdmg9kDlDRKBXh93Hn0C', @2 = '09-03-2015 19:45:11.555', @3 = '09-03-2015 19:45:11.555'
我怎樣才能突破這個錯誤,並創建一個新的用戶?