0
I'm on Rails 2.3.8;私は、このモデルていますRails 2.3:ActiveRecordエラーの種類を取得するには?
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]]
エラータイプを取得するにはどうすればよいでしょうか?
それは 'のActiveRecord :: Errors'をmonkeypatches、私は避けるだろう...エラーの種類を取得するために何のクリーンな方法が存在しないことが可能になることができますか? – mdesantis
答えを一新しました。 –
これは動作しません: 'のための'未定義のメソッド 'values' '...' instance_variable_get'を使って動作します: 'user.errors.instance_variable_get(:@ errors).values.flatten。マップ(&:タイプ).uniq'ですが、それは私の試行と同じくらい変です(しかし、リファクタリング:)) –
mdesantis