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



80
81
82
# File 'lib/dynamoid/document.rb', line 80

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

#choose_right_class(attrs) ⇒ Object



122
123
124
# File 'lib/dynamoid/document.rb', line 122

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

#countObject

Returns the number of items for this class.

Since:

  • 0.6.1



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

def count
  Dynamoid.adapter.count(table_name)
end

#deep_subclassesObject



118
119
120
# File 'lib/dynamoid/document.rb', line 118

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



105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/dynamoid/document.rb', line 105

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_keyObject

Returns the id field for this class.

Since:

  • 0.4.0



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

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

#inheritance_fieldObject

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



55
56
57
# File 'lib/dynamoid/document.rb', line 55

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

#read_capacityObject

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_capacityObject

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