1

Railsは初めてで、認証部分にdeviseを使用してアプリを作成しようとしています。最初に気付いたのは、ユーザーフィクスチャにIDがなかったためにテストが失敗したことでした。そこで、これをUserモデルに配置しました。

self.primary_key = :id

これは私のテストの実行に役立ちましたが、今は別の問題で立ち往生しています。ユーザーを追加しようとするたびに、Deviseコントローラーは次のメッセージで失敗します。

ActiveRecord::StatementInvalid in Devise::RegistrationsController#create

SQLite3::ConstraintException: users.id may not be NULL: INSERT INTO "users" ("active", "created_at", "current_sign_in_at", "current_sign_in_ip", "default_business_id", "email", "encrypted_password", "first_name", "last_name", "last_sign_in_at", "last_sign_in_ip", "remember_created_at", "reset_password_sent_at", "reset_password_token", "sign_in_count", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

ユーザーIDが自動的に作成されないのはなぜですか?Rails3.2でDevise2を実行しています

4

1 に答える 1

2

さて、私はついに問題が何であるかを見つけました。usersテーブル列はDBで主キーとして定義されていなかったidため、Railsがテーブル列に値を自動的に割り当てなかったのはそのためです。このテーブルを作成する移行には触れなかったため、どのように発生したのかわかりません(このファイルはDeviseによって生成されます)。とにかく、完全なロールバックを作成して移行を再度実行すると、問題が修正されました。返信してくれたすべての人に感謝し、これが将来誰にでも役立つことを願っています。

于 2012-07-30T21:16:50.493 に答える