mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
attributes are cached by string keys, so to_s to support symbols. fixes #5549
This commit is contained in:
parent
b42fbd3ecb
commit
e96d04a2e4
3 changed files with 17 additions and 2 deletions
|
@ -118,7 +118,7 @@ module ActiveRecord
|
|||
# "2004-12-12" in a data column is cast to a date object, like Date.new(2004, 12, 12)).
|
||||
def read_attribute(attr_name)
|
||||
# If it's cached, just return it
|
||||
@attributes_cache.fetch(attr_name) { |name|
|
||||
@attributes_cache.fetch(attr_name.to_s) { |name|
|
||||
column = @columns_hash.fetch(name) {
|
||||
return self.class.type_cast_attribute(name, @attributes, @attributes_cache)
|
||||
}
|
||||
|
|
|
@ -62,7 +62,11 @@ end
|
|||
|
||||
class Weird < ActiveRecord::Base; end
|
||||
|
||||
class Boolean < ActiveRecord::Base; end
|
||||
class Boolean < ActiveRecord::Base
|
||||
def has_fun
|
||||
super
|
||||
end
|
||||
end
|
||||
|
||||
class LintTest < ActiveRecord::TestCase
|
||||
include ActiveModel::Lint::Tests
|
||||
|
@ -957,6 +961,16 @@ class BasicsTest < ActiveRecord::TestCase
|
|||
assert b_true.value?
|
||||
end
|
||||
|
||||
def test_boolean_without_questionmark
|
||||
b_true = Boolean.create({ "value" => true })
|
||||
true_id = b_true.id
|
||||
|
||||
subclass = Class.new(Boolean).find true_id
|
||||
superclass = Boolean.find true_id
|
||||
|
||||
assert_equal superclass.read_attribute(:has_fun), subclass.read_attribute(:has_fun)
|
||||
end
|
||||
|
||||
def test_boolean_cast_from_string
|
||||
b_blank = Boolean.create({ "value" => "" })
|
||||
blank_id = b_blank.id
|
||||
|
|
|
@ -91,6 +91,7 @@ ActiveRecord::Schema.define do
|
|||
|
||||
create_table :booleans, :force => true do |t|
|
||||
t.boolean :value
|
||||
t.boolean :has_fun, :null => false, :default => false
|
||||
end
|
||||
|
||||
create_table :bulbs, :force => true do |t|
|
||||
|
|
Loading…
Reference in a new issue