aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorYury Korolev <yurykorolev@me.com>2013-11-02 17:48:16 -0700
committerYury Korolev <yurykorolev@me.com>2013-11-02 17:48:16 -0700
commit7caa09c5e1833ccc6b209a71588a44fb91606246 (patch)
treea322a2f346b15c85e7843d33e2de309783744ce1 /activerecord/lib/active_record
parent09447929a06a4650d82ed51af56e3365ec7583a6 (diff)
downloadrails-7caa09c5e1833ccc6b209a71588a44fb91606246.tar.gz
rails-7caa09c5e1833ccc6b209a71588a44fb91606246.tar.bz2
rails-7caa09c5e1833ccc6b209a71588a44fb91606246.zip
Explicit mapping for enum
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/enum.rb6
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