aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/enum.rb
diff options
context:
space:
mode:
authorAmr Tamimi <amrnt0@gmail.com>2013-12-20 14:12:59 +0200
committerAmr Tamimi <amrnt0@gmail.com>2014-01-01 01:48:15 +0200
commite0ad9ae27e9b6dc5460d91761ce6fbd7a92b08f0 (patch)
tree9e8cefb5be21412de34e786dba59e48721c9f4ff /activerecord/lib/active_record/enum.rb
parentec466998387453203444f4c6a24eb92eb204d27a (diff)
downloadrails-e0ad9ae27e9b6dc5460d91761ce6fbd7a92b08f0.tar.gz
rails-e0ad9ae27e9b6dc5460d91761ce6fbd7a92b08f0.tar.bz2
rails-e0ad9ae27e9b6dc5460d91761ce6fbd7a92b08f0.zip
Add the ability to nullify the `enum` column
Diffstat (limited to 'activerecord/lib/active_record/enum.rb')
-rw-r--r--activerecord/lib/active_record/enum.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/enum.rb b/activerecord/lib/active_record/enum.rb
index 2f8439892b..1d484f7c15 100644
--- a/activerecord/lib/active_record/enum.rb
+++ b/activerecord/lib/active_record/enum.rb
@@ -18,6 +18,11 @@ module ActiveRecord
# # conversation.update! status: 1
# conversation.status = "archived"
#
+ # # conversation.update! status: nil
+ # conversation.status = nil
+ # conversation.status.nil? # => true
+ # conversation.status # => nil
+ #
# You can set the default value from the database declaration, like:
#
# create_table :conversations do |t|
@@ -62,7 +67,7 @@ module ActiveRecord
_enum_methods_module.module_eval do
# def status=(value) self[:status] = STATUS[value] end
define_method("#{name}=") { |value|
- unless enum_values.has_key?(value)
+ unless enum_values.has_key?(value) || value.blank?
raise ArgumentError, "'#{value}' is not a valid #{name}"
end
self[name] = enum_values[value]