之前碰到一个问题,一至以为是程序的写法有问题,详见:http://ruby-china.org/topics/2977
后来经过几次排查,猜测可能是因为 devise 引起的,于是我新建了一个 devise 的工程,一试,果然有问题。
问题主要如下:devise 生成的 model 是否不能通过手工创建呢? 我是新建的工程,没有做任何发动,只是增加了 devise 的 gem 在控制台输入如下命令:
1.9.2p290 :005 > user=User.new
=> #<User id: nil, email: "", encrypted_password: "", reset_password_token: nil, reset_password_sent_at: nil, 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>
1.9.2p290 :006 > user.email='[email protected]'
=> "[email protected]"
1.9.2p290 :007 > user.save
(0.1ms) begin transaction
User Exists (0.2ms) SELECT 1 FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1
(0.1ms) rollback transaction
=> false
1.9.2p290 :008 >
可以看到,save 的时候,提示记录已存在,但是实际上是没有任何记录的:
1.9.2p290 :008 > User.all
User Load (0.6ms) SELECT "users".* FROM "users"
=> []
1.9.2p290 :009 >