我安装了devise并通过我的seeds.rb创建了一个管理员用户
Role.create!(:name => "Super Admin")
Permission.create!(:subject_class => "all", :action => "manage")
role = Role.find_by_name("Super Admin")
role.permissions << Permission.where(:subject_class => "all", :action => "manage")
user = User.new(:email => "admin@admin.de", password:"adminadmin", password_confirmation:"adminadmin")
user.role = role
user.save!
但是,如果我现在尝试通过注册页面注册新用户,则会在提交时出现以下错误:
ActiveRecord::RecordNotUnique in Devise::RegistrationsController#create
TinyTds::Error: Cannot insert duplicate key row in object 'dbo.users' with unique index 'index_users_on_reset_password_token'.: EXEC sp_executesql N'INSERT INTO [users] ([created_at], [email], [encrypted_password], [role_id], [updated_at]) OUTPUT inserted.id VALUES (@0, @1, @2, @3, @4)', N'@0 datetime, @1 nvarchar(255), @2 nvarchar(255), @3 int, @4 datetime', @0 = '2014-07-11T08:50:33.892', @1 = N'user@user.de', @2 = N'$2a$10$pfsgr9knTUGghhwJFmoaLOvWdAUptntlFuVL3/18bKRCs7ZZyFheK', @3 = 2, @4 = '2014-07-11T08:50:33.892'
我的admin
对象如下所示:
id email encrypted_password reset_password_token reset_password_sent_at remember_created_at sign_in_count current_sign_in_at last_sign_in_at current_sign_in_ip last_sign_in_ip created_at updated_at role_id
1 admin@admin.de $2a$10$/slcMrZGywmS6zDcNxKsl.Ypaxafucvb0Pg1l2SPuy11dYDkU/x/e NULL NULL NULL 1 2014-07-11 08:50:13.093 2014-07-11 08:50:13.093 127.0.0.1 127.0.0.1 2014-07-11 08:48:54.267 2014-07-11 08:50:13.097 1
任何可能导致这种情况的想法?听起来像重置密码令牌不能相同,但它在创建时自动为NIL,因此最让人有意义。
希望有人可以提供帮助。
答案 0 :(得分:1)
解决了它。
必须删除数据库中我的用户表中的命名索引,现在它可以正常工作。