Module: CassandraObject::Associations::ClassMethods

Defined in:
lib/cassandra_object/associations.rb

Instance Method Summary collapse

Instance Method Details

#association(association_name, options = {}) ⇒ Object



45
46
47
48
49
50
51
52
# File 'lib/cassandra_object/associations.rb', line 45

def association(association_name, options= {})
  self.association = self.association.dup
  if options[:unique]
    self.associations[association_name] = OneToOne.new(association_name, self, options)
  else
    self.associations[association_name] = OneToMany.new(association_name, self, options)
  end
end

#column_family_configurationObject



29
30
31
# File 'lib/cassandra_object/associations.rb', line 29

def column_family_configuration
  super << {:Name=>relationships_column_family, :CompareWith=>"UTF8Type", :CompareSubcolumnsWith=>"TimeUUIDType", :ColumnType=>"Super"}
end

#dangerous_attribute_method?(name) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/cassandra_object/associations.rb', line 33

def dangerous_attribute_method?(name)
  false
end

#generated_association_methodsObject



37
38
39
40
41
42
43
# File 'lib/cassandra_object/associations.rb', line 37

def generated_association_methods
  @generated_association_methods ||= begin
    mod = const_set(:GeneratedAssociationMethods, Module.new)
    include mod
    mod
  end
end

#relationships_column_familyObject



25
26
27
# File 'lib/cassandra_object/associations.rb', line 25

def relationships_column_family
  @relationships_column_family || "#{name}Relationships"
end

#relationships_column_family=(column_family) ⇒ Object



21
22
23
# File 'lib/cassandra_object/associations.rb', line 21

def relationships_column_family=(column_family)
  @relationships_column_family = column_family
end

#remove(key) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/cassandra_object/associations.rb', line 54

def remove(key)
  if connection.has_table?(relationships_column_family)
    begin
      CassandraObject::Base.with_connection(key, :write) do
        ActiveSupport::Notifications.instrument("remove.cassandra_object", column_family: relationships_column_family, key: key) do
          connection.remove(relationships_column_family, key.to_s, consistency: thrift_write_consistency)
        end
      end
    rescue Cassandra::Errors::InvalidError => e
      # pretty sure this is not the correct message for cassandra-driver gem, will need to investigate the actual message
      raise e unless e.message =~ /unconfigured columnfamily/i
    end
  end

  super
end