mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Move attributes
to the AttributeSet
object.
This commit is contained in:
parent
0e9a705966
commit
3e422e201d
3 changed files with 14 additions and 3 deletions
|
@ -271,9 +271,7 @@ module ActiveRecord
|
||||||
# person.attributes
|
# person.attributes
|
||||||
# # => {"id"=>3, "created_at"=>Sun, 21 Oct 2012 04:53:04, "updated_at"=>Sun, 21 Oct 2012 04:53:04, "name"=>"Francesco", "age"=>22}
|
# # => {"id"=>3, "created_at"=>Sun, 21 Oct 2012 04:53:04, "updated_at"=>Sun, 21 Oct 2012 04:53:04, "name"=>"Francesco", "age"=>22}
|
||||||
def attributes
|
def attributes
|
||||||
attribute_names.each_with_object({}) { |name, attrs|
|
@attributes.to_hash
|
||||||
attrs[name] = read_attribute(name)
|
|
||||||
}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns an <tt>#inspect</tt>-like string for the value of the
|
# Returns an <tt>#inspect</tt>-like string for the value of the
|
||||||
|
|
|
@ -10,6 +10,11 @@ module ActiveRecord
|
||||||
attributes.update(other.attributes)
|
attributes.update(other.attributes)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def to_hash
|
||||||
|
attributes.each_with_object({}) { |(k, v), h| h[k] = v.value }
|
||||||
|
end
|
||||||
|
alias_method :to_h, :to_hash
|
||||||
|
|
||||||
def freeze
|
def freeze
|
||||||
@attributes.freeze
|
@attributes.freeze
|
||||||
super
|
super
|
||||||
|
|
|
@ -45,5 +45,13 @@ module ActiveRecord
|
||||||
assert clone.frozen?
|
assert clone.frozen?
|
||||||
assert_not attributes.frozen?
|
assert_not attributes.frozen?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "to_hash returns a hash of the type cast values" do
|
||||||
|
builder = AttributeSet::Builder.new(foo: Type::Integer.new, bar: Type::Float.new)
|
||||||
|
attributes = builder.build_from_database(foo: '1.1', bar: '2.2')
|
||||||
|
|
||||||
|
assert_equal({ foo: 1, bar: 2.2 }, attributes.to_hash)
|
||||||
|
assert_equal({ foo: 1, bar: 2.2 }, attributes.to_h)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue