私は 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]]
エラーの種類を取得するより良い方法を知っていますか?