require 'set' require 'cassandra_object/log_subscriber' require 'cassandra_object/types' require 'cassandra_object/errors' module CassandraObject class Base class << self def column_family=(column_family) @column_family = column_family end def column_family @column_family || name.pluralize end def base_class klass = self while klass.superclass != Base klass = klass.superclass end klass end delegate :compute_type, :to => 'ActiveRecord::Base' end extend ActiveModel::Naming include ActiveModel::Conversion extend ActiveSupport::DescendantsTracker include Configuration include Connection include Consistency include RowTTL include Identity include Attributes include Persistence include Dirty include Validations include Callbacks include Associations include Batches include FinderMethods include Timestamps include NestedAttributes attr_accessor :key include Serialization include Migrations include Mocking def initialize(attributes={}) @key = attributes.delete(:key) @new_record = true @destroyed = false @readonly = false @attributes = {}.with_indifferent_access self.attributes = attributes @schema_version = self.class.current_schema_version end # Returns +true+ if the record is read only. def readonly? @readonly end def readonly=(value) @readonly = value end # Marks this record as read only. def readonly! self.readonly = true end def attributes @attributes.merge(:id => id) end def to_param id.to_s if persisted? end def hash id.hash end def ==(comparison_object) comparison_object.equal?(self) || (comparison_object.instance_of?(self.class) && comparison_object.key == key && !comparison_object.new_record?) end def eql?(comparison_object) self == (comparison_object) end # Returns the value of the attribute identified by attr_name after it has been typecast (for example, # "2004-12-12" in a data column is cast to a date object, like Date.new(2004, 12, 12)). # (Alias for the protected read_attribute method). def [](attr_name) read_attribute(attr_name) end # Updates the attribute identified by attr_name with the specified +value+. # (Alias for the protected write_attribute method). def []=(attr_name, value) write_attribute(attr_name, value) end end end