Class: Aws::Record::Attribute
- Inherits:
-
Object
- Object
- Aws::Record::Attribute
- Defined in:
- lib/aws-record/record/attribute.rb
Overview
This class provides helper methods for Aws::Record
attributes. These include marshalers for type casting of item attributes, the Amazon DynamoDB type for use in certain table and item operation calls, and the ability to define a database name that is separate from the name used within the model class and item instances.
Instance Attribute Summary collapse
-
#database_name ⇒ Object
readonly
Returns the value of attribute database_name.
-
#dynamodb_type ⇒ Object
readonly
Returns the value of attribute dynamodb_type.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
- #default_value ⇒ Object private
- #extract(dynamodb_item) ⇒ Object private
-
#initialize(name, options = {}) ⇒ Attribute
constructor
A new instance of Attribute.
-
#persist_nil? ⇒ Boolean
True if this attribute will actively persist nil values, false otherwise.
-
#serialize(raw_value) ⇒ Object
Attempts to serialize a raw value into the attribute’s serialized storage type.
-
#type_cast(raw_value) ⇒ Object
Attempts to type cast a raw value into the attribute’s type.
Constructor Details
#initialize(name, options = {}) ⇒ Attribute
Returns a new instance of Attribute.
49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/aws-record/record/attribute.rb', line 49 def initialize(name, = {}) @name = name @database_name = ([:database_attribute_name] || name).to_s @dynamodb_type = [:dynamodb_type] @marshaler = [:marshaler] || DefaultMarshaler @persist_nil = [:persist_nil] dv = [:default_value] unless dv.nil? @default_value_or_lambda = _is_lambda?(dv) ? dv : type_cast(dv) end end |
Instance Attribute Details
#database_name ⇒ Object (readonly)
Returns the value of attribute database_name.
24 25 26 |
# File 'lib/aws-record/record/attribute.rb', line 24 def database_name @database_name end |
#dynamodb_type ⇒ Object (readonly)
Returns the value of attribute dynamodb_type.
24 25 26 |
# File 'lib/aws-record/record/attribute.rb', line 24 def dynamodb_type @dynamodb_type end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
24 25 26 |
# File 'lib/aws-record/record/attribute.rb', line 24 def name @name end |
Instance Method Details
#default_value ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
96 97 98 99 100 101 102 |
# File 'lib/aws-record/record/attribute.rb', line 96 def default_value if _is_lambda?(@default_value_or_lambda) type_cast(@default_value_or_lambda.call) else _deep_copy(@default_value_or_lambda) end end |
#extract(dynamodb_item) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
91 92 93 |
# File 'lib/aws-record/record/attribute.rb', line 91 def extract(dynamodb_item) dynamodb_item[@database_name] end |
#persist_nil? ⇒ Boolean
Returns true if this attribute will actively persist nil values, false otherwise. Default: false.
86 87 88 |
# File 'lib/aws-record/record/attribute.rb', line 86 def persist_nil? @persist_nil ? true : false end |
#serialize(raw_value) ⇒ Object
Attempts to serialize a raw value into the attribute’s serialized storage type. This call will forward the raw value to this attribute’s marshaler class.
78 79 80 81 82 |
# File 'lib/aws-record/record/attribute.rb', line 78 def serialize(raw_value) cast_value = type_cast(raw_value) cast_value = default_value if cast_value.nil? @marshaler.serialize(cast_value) end |
#type_cast(raw_value) ⇒ Object
Attempts to type cast a raw value into the attribute’s type. This call will forward the raw value to this attribute’s marshaler class.
66 67 68 69 70 |
# File 'lib/aws-record/record/attribute.rb', line 66 def type_cast(raw_value) cast_value = @marshaler.type_cast(raw_value) cast_value = default_value if cast_value.nil? cast_value end |