Rails before_destroy可从父级访问的错误消息

时间:2012-02-15 14:52:53

标签: ruby-on-rails validation destroy

使用Rails 3,我有一个拥有多个地址的帐户模型。在地址模型中,我定义了一个before_destroy回调方法,该方法可以防止破坏,并在地址与第三个模型相关联时向地址对象添加错误。这样可以防止删除帐户或地址。

我的问题是在删除帐户时出现,因为我希望帐户对象的错误包含地址错误,但事实并非如此。有没有办法在帐户错误中包含地址错误消息?

1 个答案:

答案 0 :(得分:0)

错误消息通常分配给它们适用的模型对象。

如果你真的想,你可以抓住这些错误并将它们粘贴在地址模型的错误哈希中:

class Account < ActiveRecord::Base
  before_destroy :check_for_destruction

  def check_for_destruction
    rejected = addresses.reject{|a| a.can_destroy?} # returns array of addresses that now have errors (they should return false)
    rejected.each do |address|
      address.errors.each do |e|
        errors.add_to_base(e)
      end
    end
  end
end

假设您已经定义了Address#can_destroy?方法,那样的东西应该可以工作。 (免责声明:代码未经测试,但应该给你一个很好的跳跃点)