需要帮助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
谢谢你这么多! – David 2011-02-10 04:57:55