获取activerecord错误的散列(包括嵌套/子级/关系等)

w9apscun  于 2021-09-29  发布在  Java
关注(0)|答案(0)|浏览(207)

我相信一定有一个简单的方法来做到这一点。。。

(byebug) model.errors

# <ActiveModel::Errors:0x0000560a99906bc8 @base=#<Issue id:18 gitlab-org/gitlab-shell#8>, @errors=[#<ActiveModel::Error attribute=timelogs, type=invalid, options={}>]>

(byebug) model.errors.errors.each { |error| puts error.full_message }
Timelogs is invalid
[#<ActiveModel::Error attribute=timelogs, type=invalid, options={}>]
(byebug) model.timelogs.last.errors.errors
[#<ActiveModel::Error attribute=summary, type=too_long, options={:count=>255}>]

我已经开始尝试将一些东西组合起来,但我觉得我正在尝试重新发明轮子:

def all_error_messages(model)
      model.errors.each do |column, errors|
        if model.send(:"#{column}").respond_to?(:each)
          invalids = model.send(:"#{column}").reject(&:valid?)
          invalids.each do |invalid|
            invalid.errors.each do |error|
              model.errors.add(error.attribute, error.message)
            end
          end
        elsif model.send(:"#{column}").respond_to?(:errors)

        end
      end
    end

是否有一种简单的通用方法来获取所有错误?
谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题