Module: Cequel::Record::Properties
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/cequel/record/properties.rb
Overview
Properties on a Cequel record acts as attributes on record instances, and are persisted as column values to Cassandra. Properties are declared explicitly on a record instance in the body.
Properties can be **key columns**, **data columns**, or **collection columns**. Key columns combine to form the primary key for the record; they cannot be changed once a record has been saved. Data columns contain scalar data values like strings, integers, and timestamps. Collection columns are lists, sets, or maps that can be atomically updated.
All varieties of column have a type; see Type for the full list of possibilities. A collection column’s type is the type of its elements (in the case of a map collection, there is both a key type and a value type).
Defined Under Namespace
Modules: ClassMethods, ConstructorMethods
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
True if this record has the same type and key attributes as the other record.
-
#[](column_name) ⇒ Object
Read an attribute.
-
#[]=(column_name, value) ⇒ void
Write an attribute.
-
#attribute_names ⇒ Array<Symbol>
List of names of attributes on this record.
-
#attributes ⇒ Hash<Symbol,Object>
Map of column names to values currently set on this record.
-
#attributes=(attributes) ⇒ void
Set attributes on the record.
- #initialize(attributes = {}, record_collection = nil) ⇒ Object
-
#inspect ⇒ String
String representation of the record.
Instance Method Details
#==(other) ⇒ Boolean
Returns true if this record has the same type and key attributes as the other record.
286 287 288 289 290 291 292 |
# File 'lib/cequel/record/properties.rb', line 286 def ==(other) if key_values.any? { |value| value.nil? } super else self.class == other.class && key_values == other.key_values end end |
#[](column_name) ⇒ Object
Read an attribute
267 268 269 |
# File 'lib/cequel/record/properties.rb', line 267 def [](column_name) read_attribute(column_name) end |
#[]=(column_name, value) ⇒ void
This method returns an undefined value.
Write an attribute
279 280 281 |
# File 'lib/cequel/record/properties.rb', line 279 def []=(column_name, value) write_attribute(column_name, value) end |
#attribute_names ⇒ Array<Symbol>
Returns list of names of attributes on this record.
232 233 234 |
# File 'lib/cequel/record/properties.rb', line 232 def attribute_names @attributes.keys end |
#attributes ⇒ Hash<Symbol,Object>
Returns map of column names to values currently set on this record.
240 241 242 243 244 |
# File 'lib/cequel/record/properties.rb', line 240 def attributes attribute_names.each_with_object({}) do |name, attributes| attributes[name] = read_attribute(name) end end |
#attributes=(attributes) ⇒ void
This method returns an undefined value.
Set attributes on the record. Each attribute is set via the setter method; virtual (non-column) attributes are allowed.
253 254 255 256 257 |
# File 'lib/cequel/record/properties.rb', line 253 def attributes=(attributes) attributes.each_pair do |attribute, value| __send__(:"#{attribute}=", value) end end |
#initialize(attributes = {}, record_collection = nil) ⇒ Object
224 225 226 227 |
# File 'lib/cequel/record/properties.rb', line 224 def initialize(attributes = {}, record_collection = nil) @attributes, @record_collection = attributes, record_collection @collection_proxies = {} end |
#inspect ⇒ String
Returns string representation of the record.
297 298 299 300 301 302 303 304 305 |
# File 'lib/cequel/record/properties.rb', line 297 def inspect inspected_attributes = attributes.each_pair.map do |attr, value| inspected_value = value.is_a?(CassandraCQL::UUID) ? value.to_guid : value.inspect "#{attr}: #{inspected_value}" end "#<#{self.class} #{inspected_attributes.join(", ")}>" end |