在rails事务中处理错误消息的最佳方法是什么?

时间:2014-08-25 07:36:52

标签: ruby-on-rails activerecord ruby-on-rails-4 transactions

我使用的是Rails 4.1.5和Ember 1.7.0。我有一个问题是如何从我的服务器api发送错误消息。

这样的代码:

begin
  ActiveRecord::Base.transaction do
    a.save
    b.update(xxx)
    c.update(xxx)
  end
  return a
rescue ActiveRecord::RecordInvalid => e
  a.errors.add(:base, e.message)
end

如果我使用a.errors.add(:base, e.message)transaction获取错误消息。 json会喜欢这样:

errors: {base:[RecordInvalid: Name can not be blank]}

但我认为这样的错误信息更好:

errors: {name:[can not be blank]}

如果我想得到像name:[can not be blank]这样的错误,我可以编写如下代码:

begin
  ActiveRecord::Base.transaction do
    a.save
    b.update(xxx)
    c.update(xxx)
  end
  return a
rescue ActiveRecord::RecordInvalid => e
  return a
end

但它也有问题。如果b模型更新有RecordInvalid个错误,我不会得到b模型错误消息。

所以我不知道如何从事务管理我的错误消息。

0 个答案:

没有答案