需要帮助update_attributes

问题描述:

我希望有人可以看看这个,并给我建议如何让这个行动更好。它适用于我喜欢的方式,但似乎没有必要创建两个模型实例。需要帮助update_attributes

我觉得我必须这么做,因为即使update_attributes在验证失败时不会更新数据库,我仍然希望@user实例可用于在视图中显示原始@ user.photo。我正在使用回形针。

非常感谢。

def edit_avatar 

    @user = User.find(@username_id) 
    if params['post_data'].present? 
     @user.update_attributes(params[:post_data]) 
     @errors = @user.errors 
     if @user.errors.count == 0 
      @start_jcrop = true 
     else 
      @user = User.find(@username_id) 
     end 
    end 
end 

而不是重新加载模型,您可以使用Dirty Changes功能。 或者你可以使用

@user.reload 

,而不是创建一个新的实例。

@user = User.find(@username_id) 
    ... 
    else 
     @user.reload 
    end 
end 

您还可以简化图如下

@user = User.find(@username_id) 
if params['post_data'].present? 
    if @user.update_attributes(params[:post_data]) 
    @start_jcrop = true 
    else 
    @errors = @user.errors 
    @user.reload 
    end 
end 

,如果你跳过重装

@user = User.find(@username_id) 
if params['post_data'].present? 
    if @user.update_attributes(params[:post_data]) 
    @start_jcrop = true 
    else 
    # render 
    # the previous image is available at 
    # @user.attribute_name_was 
    end 
end 
+0

谢谢你这么多! – David 2011-02-10 04:57:55