我相信一定有一个简单的方法来做到这一点。。。
(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
是否有一种简单的通用方法来获取所有错误?
谢谢
暂无答案!
目前还没有任何答案,快来回答吧!