代码之家  ›  专栏  ›  技术社区  ›  Salil

如果“update\u attribute”失败,它返回什么?

  •  5
  • Salil  · 技术社区  · 14 年前

    我有以下代码

    @user = User.find(params[:id])
    if (@user.activation_status == "active") 
      #some code here 
      @user.update_attribute('activation_status' ,'inactive')  # Line 44
      #send mail to user that his account is Acivated
    else
    
    end
    

    Line 44 update_attribute 如果失败返回?

    2 回复  |  直到 6 年前
        1
  •  6
  •   mikej heading_to_tahiti    14 年前

    以下是 update_attribute

    def update_attribute(name, value)
      send(name.to_s + '=', value)
      save(false)
    end
    

    save perform_validations false . 因此 更新\u属性 如果任何save回调(例如。 before_save )通过返回阻止保存记录 .

        2
  •  1
  •   AboutRuby    14 年前

    如果update\u属性失败,它将返回false。如果忽略返回值,也不会知道发生了什么。你可以使用更新属性!,这又叫save!,这反过来又会在出现问题时引发异常。虽然这是您不能错过的(除非您编写catch all rescue语句),但如果您没有捕获它,它将落入Rails,并将中止请求。

    检查返回值通常是个好主意。