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.
298 299 300 301 302 303 304 |
# File 'lib/cequel/record/properties.rb', line 298 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
279 280 281 |
# File 'lib/cequel/record/properties.rb', line 279 def [](column_name) read_attribute(column_name) end |
#[]=(column_name, value) ⇒ void
This method returns an undefined value.
Write an attribute
291 292 293 |
# File 'lib/cequel/record/properties.rb', line 291 def []=(column_name, value) write_attribute(column_name, value) end |
#attribute_names ⇒ Array<Symbol>
Returns list of names of attributes on this record.
244 245 246 |
# File 'lib/cequel/record/properties.rb', line 244 def attribute_names @attributes.keys end |
#attributes ⇒ Hash<Symbol,Object>
Returns map of column names to values currently set on this record.
252 253 254 255 256 |
# File 'lib/cequel/record/properties.rb', line 252 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.
265 266 267 268 269 |
# File 'lib/cequel/record/properties.rb', line 265 def attributes=(attributes) attributes.each_pair do |attribute, value| __send__(:"#{attribute}=", value) end end |
#initialize(attributes = {}, record_collection = nil) ⇒ Object
236 237 238 239 |
# File 'lib/cequel/record/properties.rb', line 236 def initialize(attributes = {}, record_collection = nil) @attributes, @record_collection = attributes, record_collection @collection_proxies = {} end |
#inspect ⇒ String
Returns string representation of the record.
309 310 311 312 313 314 315 316 317 |
# File 'lib/cequel/record/properties.rb', line 309 def inspect inspected_attributes = attributes.each_pair.map do |attr, value| inspected_value = Cequel.uuid?(value) ? value.to_s : value.inspect "#{attr}: #{inspected_value}" end "#<#{self.class} #{inspected_attributes.join(", ")}>" end |