2012-03-05 7 views
1

私は以前このフォーラムのgemを使っていましたが、コンソールを使ってforem_adminを "true"に設定することもできました。ただし、今回は、保存しようとするとトランザクションがロールバックされます。レールにatttributeを設定するconsole - トランザクションロールバック

私はforem_adminを "true"に設定して保存しました。トランザクションをロールバックしました(つまり保存しなかったことを意味します)。私は "u"してforem_admin = trueを示しました。 forem_admin = falseを示したコンソールを再起動しました。

この宝石に精通している人なら、私はこのforem_state属性が新しいと思うので、何か変更があるかどうか疑問に思います。

私はプロのSQLないんだけど、私には面白いに見える一つのことは、私はそれが無いと"users"."id" = 5すなわちていたと期待したライン

"users"."id" != 5 

である「!」、のID理由私はu.save後u.errorsを行うときに、ユーザー「signuplinksは」、私はこのエラーメッセージ

を更新を取得していますこれは、レール3.2アプリ

5.

されます

@messages={:password=>["can't be blank"]} 

コンソール

ruby-1.9.3-rc1 :001 > u = User.last 
    User Load (0.2ms) SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1 
=> #<User id: 5, email: "[email protected]", encrypted_password: "$2a$10$axjwcO.kU4/mqC9Llyj.b.r/2jJULnWKmG7Pi3Zu1AE3...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2012-03-05 03:37:59", last_sign_in_at: "2012-03-05 03:37:59", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", confirmation_token: nil, confirmed_at: "2012-03-05 03:37:58", confirmation_sent_at: "2012-03-05 03:34:33", unconfirmed_email: nil, created_at: "2012-03-05 03:34:33", updated_at: "2012-03-05 03:37:59", name: "signuplinks", country: "Canada", image: "3.png", forem_admin: false, forem_state: "pending_review"> 
ruby-1.9.3-rc1 :002 > u.forem_admin = true 
=> true 
ruby-1.9.3-rc1 :003 > u.save 
    (0.1ms) begin transaction 
    User Exists (0.2ms) SELECT 1 FROM "users" WHERE (LOWER("users"."name") = LOWER('signuplinks') AND "users"."id" != 5) LIMIT 1 
    User Exists (0.1ms) SELECT 1 FROM "users" WHERE (LOWER("users"."email") = LOWER('[email protected]') AND "users"."id" != 5) LIMIT 1 
    (0.1ms) rollback transaction 
=> false 
ruby-1.9.3-rc1 :004 > u 
=> #<User id: 5, email: "[email protected]", encrypted_password: "$2a$10$axjwcO.kU4/mqC9Llyj.b.r/2jJULnWKmG7Pi3Zu1AE3...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2012-03-05 03:37:59", last_sign_in_at: "2012-03-05 03:37:59", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", confirmation_token: nil, confirmed_at: "2012-03-05 03:37:58", confirmation_sent_at: "2012-03-05 03:34:33", unconfirmed_email: nil, created_at: "2012-03-05 03:34:33", updated_at: "2012-03-05 03:37:59", name: "signuplinks", country: "Canada", image: "3.png", forem_admin: true, forem_state: "pending_review"> 
ruby-1.9.3-rc1 :005 > exit 
Michael-Pro:ic michl$ rails c 
Loading development environment (Rails 3.2.1) 
ruby-1.9.3-rc1 :001 > u = User.last 
    User Load (0.3ms) SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1 
=> #<User id: 5, email: "[email protected]", encrypted_password: "$2a$10$axjwcO.kU4/mqC9Llyj.b.r/2jJULnWKmG7Pi3Zu1AE3...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2012-03-05 03:37:59", last_sign_in_at: "2012-03-05 03:37:59", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", confirmation_token: nil, confirmed_at: "2012-03-05 03:37:58", confirmation_sent_at: "2012-03-05 03:34:33", unconfirmed_email: nil, created_at: "2012-03-05 03:34:33", updated_at: "2012-03-05 03:37:59", name: "signuplinks", country: "Canada", image: "3.png", forem_admin: false, forem_state: "pending_review"> 
+0

宝石の名前は何ですか? Userモデルで失敗している検証ステップがあるようです。保存しようとした後、 'u.errors'を実行してその出力をポストします。 – wpgreenway

+0

おそらく 'u.id'は5なので、" signuplinks "という名前/電子メールを持ち、' ​​u'ではない(すなわち 'id!= 5')人々を探しています。名前と電子メールの一意性検査と検証プロセスの一部です。 'u.forem_admin = true'の副作用は何ですか?舞台裏でメールアドレスや名前が変更されていますか?管理者は1人だけですか?管理者について興味深いものは何ですか? –

+0

@wpgreenway更新されたOP。パスワードの空白のエラーメッセージが表示されます。なぜか分からない。 – Leahcim

答えて

2

実際に、これは私自身のせいでした。問題を指摘するための@muistooshortのおかげでおそらくモデルになります。私はコンソールでユーザーの詳細を変更するのを止めていたバリデータのvalidates_presenceに "password"を含めました(パスワードを使わずに)

+0

私は非常に同じ問題を抱えていました、ありがとう –

関連する問題