aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorGodfrey Chan <godfreykfc@gmail.com>2014-01-03 09:31:01 -0800
committerGodfrey Chan <godfreykfc@gmail.com>2014-01-03 09:31:01 -0800
commit788bb40e3887e2718f07be769b80818d653638f0 (patch)
treef66c4334fc261ed18955853ce3da796935a24a4f /activerecord/test
parent97e7ca48c139ea5cce2fa9b4be631946252a1ebd (diff)
downloadrails-788bb40e3887e2718f07be769b80818d653638f0.tar.gz
rails-788bb40e3887e2718f07be769b80818d653638f0.tar.bz2
rails-788bb40e3887e2718f07be769b80818d653638f0.zip
Building new records with enum scopes now works as expected
Previously, this would give an `ArgumentError`: class Issue < ActiveRecord::Base enum :status, [:open, :finished] end Issue.open.build # => ArgumentError: '0' is not a valid status Issue.open.create # => ArgumentError: '0' is not a valid status PR #13542 muted the error, but the issue remains. This commit fixes the issue by allowing the enum value to be written directly via the setter: Issue.new.status = 0 # This now sets status to :open Assigning a value directly via the setter like this is not part of the documented public API, so users should not rely on this behavior. Closes #13530.
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/enum_test.rb13
-rw-r--r--activerecord/test/schema/schema.rb4
2 files changed, 7 insertions, 10 deletions
diff --git a/activerecord/test/cases/enum_test.rb b/activerecord/test/cases/enum_test.rb
index 47e3dfc3ad..c09e58fbf1 100644
--- a/activerecord/test/cases/enum_test.rb
+++ b/activerecord/test/cases/enum_test.rb
@@ -79,12 +79,13 @@ class EnumTest < ActiveRecord::TestCase
assert_equal 2, Book::STATUS[:published]
end
- test "first_or_initialize with enums' scopes" do
- class Issue < ActiveRecord::Base
- enum status: [:open, :closed]
- end
+ test "building new objects with enum scopes" do
+ assert Book.written.build.written?
+ assert Book.read.build.read?
+ end
- assert Issue.open.empty?
- assert Issue.open.first_or_initialize
+ test "creating new objects with enum scopes" do
+ assert Book.written.create.written?
+ assert Book.read.create.read?
end
end
diff --git a/activerecord/test/schema/schema.rb b/activerecord/test/schema/schema.rb
index 9f504801af..ac546fc296 100644
--- a/activerecord/test/schema/schema.rb
+++ b/activerecord/test/schema/schema.rb
@@ -327,10 +327,6 @@ ActiveRecord::Schema.define do
t.string :color
end
- create_table :issues, force: true do |t|
- t.integer :status
- end
-
create_table :items, force: true do |t|
t.column :name, :string
end