【问题标题】:Rails before_destroy error message accessible from parent可从父级访问的 Rails before_destroy 错误消息
【发布时间】:2012-02-15 14:52:53
【问题描述】:

使用 Rails 3,我有一个具有多个地址的帐户模型。在地址模型中,我定义了一个 before_destroy 回调方法,如果地址与第三个模型相关联,它可以防止销毁并向地址对象添加错误。这可以很好地防止帐户或地址被删除。

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

【问题讨论】:

    标签: ruby-on-rails validation destroy


    【解决方案1】:

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

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

    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? 方法,这样的事情应该可以工作。 (免责声明:代码未经测试,但应该给你一个很好的起点)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多