Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何复制ActiveResource::Error对象?_Ruby_Activeresource - Fatal编程技术网

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 4

ActiveResource::Errors继承自

通过枚举
base\u user
的属性,可以覆盖
@user
实例上的错误:

base_user.errors.each do |name, value|
  @user.errors.set(name, value)
end

你可能需要考虑两个对象都有错误的情况,并且用另一个对象覆盖一个可能不合适。这并不是我想做的,但了解.set帮助我解决了问题。