Ruby on rails 需要有关更新属性的帮助吗

Ruby on rails 需要有关更新属性的帮助吗,ruby-on-rails,ruby-on-rails-3,paperclip,Ruby On Rails,Ruby On Rails 3,Paperclip,我希望有人能看到这一点,并就如何让这一行动变得更好提出建议。它以我喜欢的方式工作,但似乎没有必要创建两个模型实例 我觉得我必须这样做,因为即使update_属性在验证失败时不会更新数据库,我仍然希望@user实例可以在视图中显示原始@user.photo。我用的是回形针 非常感谢 def edit_avatar @user = User.find(@username_id) if params['post_data'].present? @user.update

我希望有人能看到这一点,并就如何让这一行动变得更好提出建议。它以我喜欢的方式工作,但似乎没有必要创建两个模型实例

我觉得我必须这样做,因为即使update_属性在验证失败时不会更新数据库,我仍然希望@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

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

@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