2012-03-05 90 views
1

我以前使用过此论坛gem,并且还能够使用控制台将forem_admin设置为“true”。但是,这次我试图保存时会回滚事务。在Rails控制台中设置atttribute - 事务回滚

您可以在下面看到我将forem_admin设置为“true”,保存它,它将事务回滚(意味着它未保存),我做了“u”,它显示forem_admin = true,但是当我重新启动它显示forem_admin = false的控制台。

如果有人熟悉这个宝石,我认为这个forem_state属性是新的,所以我想知道是否有什么改变。

我不是一个SQL亲,但有一点看起来很滑稽对我来说是我本来期望它一直"users"."id" = 5即没有!“”行了

"users"."id" != 5 

,因为标识用户“signuplinks”是5

这是Rails 3.2的应用程序

更新当我做后u.save u.errors,我收到此错误信息

@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

gem的名称是什么?看起来可能有一个验证步骤在用户模型上失败。尝试保存后,执行'u.errors'并发布该输出。 – wpgreenway 2012-03-05 04:25:40

+0

据推测'u.id'是5,所以这些WHEE正在寻找具有“signuplinks”的名称/电子邮件并且不是“u”(即'id!= 5')的人;所以这些是名称和电子邮件唯一性检查和验证过程的一部分。 u.forem_admin = true'的副作用是什么?它是否改变了幕后的电子邮件地址或名称?是否只允许一个管理员?有关管理员的其他任何有趣的事情? – 2012-03-05 04:27:12

+0

@wpgreenway更新了OP。有一个密码空白错误消息。不知道为什么。 – Leahcim 2012-03-05 05:10:57

回答

2

实际上,这是我自己的错。感谢@ muistooshort指出问题可能在模型中。我在验证器的validates_presence中包含了“密码”,这正在阻止我在控制台中更改用户详细信息(不包括密码)

+0

我遇到了同样的问题,非常感谢 – 2015-02-01 11:57:42