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