我在 Rails 2.3.8 上;我有这个模型:
class Coupon < ActiveRecord::Base
validate :foo
def foo
errors.add_to_base :foo_error
end
end
我的目的是检索错误的类型,例如:
c = Coupon.new
c.valid?
c.errors.types #=> [[:base, :foo_error]]
我设法检索了错误类型,但使用了一个非常奇怪的猴子补丁:
# in config/initializers/active_record_errors_types.rb
module ActiveRecord
class Errors
def types
instance_variable_get(:@errors).map do |k,v|
[ k.to_sym, v[0].instance_variable_get(:@type) ]
end
end
end
end
c = Coupon.new
c.valid?
c.errors.types #=> [[:base, :foo_error]]
您知道检索错误类型的更好方法吗?