users テーブルのシードに問題があります。
(レール 3.2.6、jruby 1.6.7.2、デバイス 2.1.2)
これは、「rails generate devise User」によって生成された非常に一般的な User テーブルであり、ユーザーが電子メール アドレスではなくユーザー名でログインできるように、このハウツー ページで説明されている変更が加えられています。
rails db:seed
エラーの兆候もログもありません。sqlite コンソールを使用して確認すると、テーブルは空です。 はい、開発環境を使用しています。私はこれを二重および三重にチェックしました。
rails console
作成コマンドを使用して入力すると、次のようになります。
1178 ~/dev/proj$ rails console
Loading development environment (Rails 3.2.6)
jruby-1.6.7.2 :001 > User.create(
jruby-1.6.7.2 :002 > :username => 'admin',
jruby-1.6.7.2 :003 > :email => 'admin@fake.com',
jruby-1.6.7.2 :004 > :password => 'admin',
jruby-1.6.7.2 :005 > :password_confirmation => 'admin',
jruby-1.6.7.2 :006 > )
User Exists (1.0ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = 'admin@x.com' LIMIT 1
=> #<User id: nil, email: "admin@fake.com", encrypted_password: "$2a$10$SMz0xdF.BkPV.4IX4TZ6Zu9WbQEk6kvap7mSGfwA7cLe...", 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, username: "admin">
次に示すように、テーブルが空であり、まだ空であるため、ユーザーが存在すると表示される理由がわかりません。
jruby-1.6.7.2 :013 > User.all
User Load (0.0ms) SELECT "users".* FROM "users"
=> []
検証機能が誤動作している可能性があります。ソースで見つけることができる唯一のものはfind_first_by_auth_conditions
、前述のハウツーページから(指示に従って)コピーしたものですが、それがこれを引き起こしているようには見えません.
助けていただければ幸いです。このユーザーを作成できない原因は何ですか?
更新:次を使用すると、動作します:
u = User.new(...)
u.save(:validate=>false)
つまり、これは私の検証がどこかで失敗していることを意味します。残念ながら、前に述べた 1 つの方法を除いて、検証をコーディングしていません。どうすれば解決できますか?