Ruby 如何复制ActiveResource::Error对象?
我正在对Ruby 如何复制ActiveResource::Error对象?,ruby,activeresource,Ruby,Activeresource,我正在对基本用户执行操作。我希望我的@user的错误与基本用户的错误相同,因为我最终在视图中将这些错误显示为横幅。但是,我不知道如何设置@user的错误。以下是我正在做的: base_user.validate_password_change(params) if base_user.errors.size > 0 #@user.errors.initialize_dup(base_user.errors) # does not work @user.errors
基本用户执行操作。我希望我的@user
的错误与基本用户的错误相同,因为我最终在视图中将这些错误显示为横幅。但是,我不知道如何设置@user
的错误。以下是我正在做的:
base_user.validate_password_change(params)
if base_user.errors.size > 0
#@user.errors.initialize_dup(base_user.errors) # does not work
@user.errors = base_user.errors.dup # does not work
raise 'Validation Errors' if @user.errors.size > 0
end
@user.errors
是一个空哈希。base_user.errors.messages是一个散列,包含名为password的数组和元素(密码格式不正确的原因字符串)。根据,ActiveResource::Error对象可以从数组中执行、从哈希中执行(未在API中列出,但我在代码中看到)、从json中执行、从xml中执行,但它没有初始化或设置器
我使用的是Ruby 2.0和Rails 4.0.0,它们使用ActiveResource 4ActiveResource::Errors继承自
通过枚举base\u user
的属性,可以覆盖@user
实例上的错误:
base_user.errors.each do |name, value|
@user.errors.set(name, value)
end
你可能需要考虑两个对象都有错误的情况,并且用另一个对象覆盖一个可能不合适。这并不是我想做的,但了解.set帮助我解决了问题。