Module: Dynamoid::Document::ClassMethods

Defined in:
lib/dynamoid/document.rb

Instance Method Summary collapse

Instance Method Details

#attr_readonly(*read_only_attributes) ⇒ Object



35
36
37
38
# File 'lib/dynamoid/document.rb', line 35

def attr_readonly(*read_only_attributes)
  ActiveSupport::Deprecation.warn('[Dynamoid] .attr_readonly is deprecated! Call .find instead of')
  self.read_only_attributes.concat read_only_attributes.map(&:to_s)
end

#build(attrs = {}) ⇒ Dynamoid::Document

Initialize a new object.

Parameters:

  • attrs (Hash) (defaults to: {}) —

    Attributes with which to create the object.

Returns:

Since:

  • 0.2.0



87
88
89
# File 'lib/dynamoid/document.rb', line 87

def build(attrs = {})
  choose_right_class(attrs).new(attrs)
end

#capacity_mode ⇒ Object

Returns the billing (capacity) mode for this table. Could be either :provisioned or :on_demand



57
58
59
# File 'lib/dynamoid/document.rb', line 57

def capacity_mode
  options[:capacity_mode] || Dynamoid::Config.capacity_mode
end

#choose_right_class(attrs) ⇒ Object



129
130
131
# File 'lib/dynamoid/document.rb', line 129

def choose_right_class(attrs)
  attrs[inheritance_field] ? attrs[inheritance_field].constantize : self
end

#count ⇒ Object

Returns the number of items for this class.

Since:

  • 0.6.1



76
77
78
# File 'lib/dynamoid/document.rb', line 76

def count
  Dynamoid.adapter.count(table_name)
end

#deep_subclasses ⇒ Object



125
126
127
# File 'lib/dynamoid/document.rb', line 125

def deep_subclasses
  subclasses + subclasses.map(&:deep_subclasses).flatten
end

#exists?(id_or_conditions = {}) ⇒ Boolean

Does this object exist?

Supports primary key in format that find call understands. Multiple keys and single compound primary key should be passed only as Array explicitily.

Supports conditions in format that where call understands.

Examples:

With id


Post.exist?(713)
Post.exist?([713, 210])

With attributes conditions


Post.exist?(version: 1, 'created_at.gt': Time.now - 1.day)

Parameters:

  • id_or_conditions (Mixed) (defaults to: {}) —

    the id of the object or a hash with the options to filter from.

Returns:

  • (Boolean) —

    true/false

Since:

  • 0.2.0



112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/dynamoid/document.rb', line 112

def exists?(id_or_conditions = {})
  case id_or_conditions
  when Hash then where(id_or_conditions).count >= 1
  else
    begin
      find(id_or_conditions)
      true
    rescue Dynamoid::Errors::RecordNotFound
      false
    end
  end
end

#hash_key ⇒ Object

Returns the id field for this class.

Since:

  • 0.4.0



69
70
71
# File 'lib/dynamoid/document.rb', line 69

def hash_key
  options[:key] || :id
end

#inheritance_field ⇒ Object

Returns the field name used to support STI for this table.



62
63
64
# File 'lib/dynamoid/document.rb', line 62

def inheritance_field
  options[:inheritance_field] || :type
end

#read_capacity ⇒ Object

Returns the read_capacity for this table.

Since:

  • 0.4.0



43
44
45
# File 'lib/dynamoid/document.rb', line 43

def read_capacity
  options[:read_capacity] || Dynamoid::Config.read_capacity
end

#table(options = {}) ⇒ Object

Set up table options, including naming it whatever you want, setting the id key, and manually overriding read and write capacity.

Parameters:

  • options (Hash) (defaults to: {}) —

    options to pass for this table

Options Hash (options):

  • :name (Symbol) —

    the name for the table; this still gets namespaced

  • :id (Symbol) —

    id column for the table

  • :read_capacity (Integer) —

    set the read capacity for the table; does not work on existing tables

  • :write_capacity (Integer) —

    set the write capacity for the table; does not work on existing tables

Since:

  • 0.4.0



30
31
32
33
# File 'lib/dynamoid/document.rb', line 30

def table(options = {})
  self.options = options
  super if defined? super
end

#write_capacity ⇒ Object

Returns the write_capacity for this table.

Since:

  • 0.4.0



50
51
52
# File 'lib/dynamoid/document.rb', line 50

def write_capacity
  options[:write_capacity] || Dynamoid::Config.write_capacity
end