【问题标题】:Why am I unable to save an existing user with updated attributes in my rails app?为什么我无法在我的 rails 应用程序中保存具有更新属性的现有用户?
【发布时间】:2013-10-07 01:15:17
【问题描述】:

我在 Rails 控制台中运行了这个:

u = User.first
  User Load (0.3ms)  SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
 => #<User id: 4, name: "Administrator", email: "administrator@wdis.com", created_at: "2013-09-27 01:01:54", updated_at: "2013-09-29 23:52:11", password_digest: ".......", remember_token: "........", admin: true, num_credits: nil> 
2.0.0p247 :002 > u.num_credits = 1
 => 1 
2.0.0p247 :003 > u.num_credits
 => 1 
2.0.0p247 :004 > u.save
   (0.3ms)  begin transaction
  User Exists (0.3ms)  SELECT 1 AS one FROM "users" WHERE (LOWER("users"."email") = LOWER('administrator@wdis.com') AND "users"."id" != 4) LIMIT 1
   (0.2ms)  rollback transaction
 => false 

【问题讨论】:

    标签: ruby-on-rails model rails-console


    【解决方案1】:

    必须有一些验证阻止此用户被保存。只需在用户模型中检查您的验证。你也可以使用u.errors.full_messages.to_sentence检查这个用户的错误

    【讨论】:

    • 谢谢!它告诉我“密码太短”,我完全忘记了这是对现有用户的验证。是否可以进行仅在更改密码时运行的验证?这样控制器可以更改用户字段(在本例中为 num_credits)而无需输入密码?
    • 完成了,对我的后续问题有什么想法吗?
    • 您可以限制验证在更新或创建或两者时发生,但不能在属性更改时发生
    猜你喜欢
    • 1970-01-01
    • 2011-02-13
    • 2012-05-22
    • 2010-12-18
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2018-12-13
    • 2021-03-18
    相关资源
    最近更新 更多