diff options
author | Yury Korolev <yurykorolev@me.com> | 2013-11-02 17:48:16 -0700 |
---|---|---|
committer | Yury Korolev <yurykorolev@me.com> | 2013-11-02 17:48:16 -0700 |
commit | 7caa09c5e1833ccc6b209a71588a44fb91606246 (patch) | |
tree | a322a2f346b15c85e7843d33e2de309783744ce1 /activerecord/lib | |
parent | 09447929a06a4650d82ed51af56e3365ec7583a6 (diff) | |
download | rails-7caa09c5e1833ccc6b209a71588a44fb91606246.tar.gz rails-7caa09c5e1833ccc6b209a71588a44fb91606246.tar.bz2 rails-7caa09c5e1833ccc6b209a71588a44fb91606246.zip |
Explicit mapping for enum
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/enum.rb | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/enum.rb b/activerecord/lib/active_record/enum.rb index 60af6b4178..ef7ccb89bd 100644 --- a/activerecord/lib/active_record/enum.rb +++ b/activerecord/lib/active_record/enum.rb @@ -3,6 +3,9 @@ module ActiveRecord # # class Conversation < ActiveRecord::Base # enum status: [:active, :archived] + # + # # same but with explicit mapping + # enum status: {active: 0, archived: 1} # end # # Conversation::STATUS # => { active: 0, archived: 1 } @@ -41,7 +44,8 @@ module ActiveRecord # def direction() DIRECTION.key self[:direction] end class_eval "def #{name}() #{const_name}.key self[:#{name}] end" - values.each_with_index do |value, i| + pairs = values.respond_to?(:each_pair) ? values.each_pair : values.each_with_index + pairs.each do |value, i| # DIRECTION[:incoming] = 0 const_get(const_name)[value] = i |