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 |
# 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] @default_value_or_lambda = type_cast(dv) unless dv.nil? 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.
94 95 96 97 98 99 100 |
# File 'lib/aws-record/record/attribute.rb', line 94 def default_value if @default_value_or_lambda.respond_to?(:call) @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.
89 90 91 |
# File 'lib/aws-record/record/attribute.rb', line 89 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.
84 85 86 |
# File 'lib/aws-record/record/attribute.rb', line 84 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.
76 77 78 79 80 |
# File 'lib/aws-record/record/attribute.rb', line 76 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.
64 65 66 67 68 |
# File 'lib/aws-record/record/attribute.rb', line 64 def type_cast(raw_value) cast_value = @marshaler.type_cast(raw_value) cast_value = default_value if cast_value.nil? cast_value end |