Class | AWS::Record::HashModel |
In: |
lib/aws/record/hash_model/scope.rb
lib/aws/record/hash_model/finder_methods.rb lib/aws/record/hash_model/attributes.rb lib/aws/record/hash_model.rb |
Parent: | Object |
find_by_id | -> | [] |
shard | -> | domain |
count | -> | size |
Returns an enumerable scope object represents all records.
Book.all.each do |book| # ... end
This method is equivalent to +find(:all)+, and therefore you can also pass aditional options.
Book.all(:where => { :author' => 'me' }).each do |my_book| # ... end
@return [Scope] Returns an enumerable scope object.
Adds a boolean attribute to this class.
@example
class Book < AWS::Record::HashModel boolean_attr :read end b = Book.new b.read? # => false b.read = true b.read? # => true listing = Listing.new(:score => '123.456' listing.score # => 123.456
@param [Symbol] name The name of the attribute.
Counts records Amazon DynamoDB.
class Product < AWS::Record::HashModel end # returns the count of records in the 'Product' table Product.count
You can specify the table via shard
# returns the count of records in the 'products-1' table Product.shard('products-1').count
You can also specify the shard as an option to count.
Product.count(:shard => 'table-name')
Chaining count with limit has no effect on the count.
Product.limit(10).count # same as Product.count, limit ignored
@param [Hash] options
@option [String] :shard Which shard to count records in.
@return [Integer] The count of records in the table.
Creates the DynamoDB table that is configured for this class.
class Product < AWS::Record::HashModel end # create the table 'Product' with 10 read/write capacity units Product.create_table 10, 10
If you shard you data across multiple tables, you can specify the shard name:
# create two tables, with the given names Product.create_table 500, 10, :shard_name => 'products-1' Product.create_table 500, 10, :shard_name => 'products-2'
If you share a single AWS account with multiple applications, you can provide a table prefix to group tables and to avoid name collisions:
AWS::Record.table_prefix = 'myapp-' # creates the table 'myapp-Product' Product.create_table 250, 50 # creates the table 'myapp-products-1' Product.create_table 250, 50, :shard_name => 'products-1'
@param [Integer] read_capacity_units
See {DynamoDB::TableCollection#create} for more information.
@param [Integer] write_capacity_units
See {DynamoDB::TableCollection#create} for more information.
@param [Hash] options
@option options [String] :shard_name Defaults to the class name. The
shard name will be prefixed with {AWS::Record.table_prefix}, and that becomes the table name.
@return [DynamoDB::Table]
Adds a date attribute to this class.
@example A standard date attribute
class Person < AWS::Record::HashModel date_attr :birthdate end baby = Person.new baby.birthdate = Time.now baby.birthdate #=> <Date: ....>
@param [Symbol] name The name of the attribute.
@param [Hash] options
@option options [Boolean] :set (false) When true this attribute
can have multiple dates.
Adds a datetime attribute to this class.
@example A standard datetime attribute
class Recipe < AWS::Record::HashModel datetime_attr :invented end recipe = Recipe.new(:invented => Time.now) recipe.invented #=> <DateTime ...>
If you add a datetime_attr for +:created_at+ and/or +:updated_at+ those will be automanaged.
@param [Symbol] name The name of the attribute.
@param [Hash] options
@option options [Boolean] :set (false) When true this attribute
can have multiple date times.
Finds records in Amazon DynamoDB and returns them as objects of the current class.
Finding +:all+ returns an enumerable scope object
People.find(:all, :limit => 10).each do |person| puts person.name end
Finding +:first+ returns a single record (or nil)
boss = People.find(:first)
Find accepts a hash of find modifiers (+:shard+ and +:limit+). You can also choose to omit these modifiers and chain them on the scope object returned. In the following example only one request is made to SimpleDB (when each is called)
people = People.find(:all, :limit => 10) people = people.limit(10).find(:all)
@overload find(id)
@param id The record to find, raises an exception if the record is not found.
@overload find(mode, options = {})
@param [:all,:first] mode (:all) When finding +:all+ matching records and array is returned of records. When finding +:first+ then +nil+ or a single record will be returned. @param [Hash] options @option options [Integer] :shard The shard name of the Amazon DynamoDB table to search. @option options [Integer] :limit The max number of records to fetch.
@param [String] id The id of the record to load. @param [Hash] options @option options [String] :shard Specifies what shard (i.e. table)
should be searched.
@raise [RecordNotFound] Raises a record not found exception if there
was no data found for the given id.
@return [Record::HashModel] Returns the record with the given id.
@return [Object,nil] Returns the first record found. If there were
no records found, nil is returned.
Adds a float attribute to this class.
class Listing < AWS::Record::HashModel float_attr :score end listing = Listing.new(:score => '123.456') listing.score # => 123.456
@param [Symbol] name The name of the attribute. @param [Hash] options @option options [Boolean] :set (false) When true this attribute
can have multiple values.
Adds an integer attribute to this class.
class Recipe < AWS::Record::HashModel integer_attr :servings end recipe = Recipe.new(:servings => '10') recipe.servings #=> 10
@param [Symbol] name The name of the attribute. @param [Hash] options @option options [Boolean] :set (false) When true this attribute
can have multiple values.
Returns a chainable scope object that restricts further scopes to a particular table.
Book.shard('books-2').each do |book| # ... end
@param [String] shard_name @return [Scope] Returns a scope for restricting the table searched.
Adds a string attribute to this class.
@example A standard string attribute
class Recipe < AWS::Record::HashModel string_attr :name end recipe = Recipe.new(:name => "Buttermilk Pancakes") recipe.name #=> 'Buttermilk Pancakes'
@example A string attribute with +:set+ set to true
class Recipe < AWS::Record::HashModel string_attr :tags, :set => true end recipe = Recipe.new(:tags => %w(popular dessert)) recipe.tags #=> #<Set: {"popular", "desert"}>
@param [Symbol] name The name of the attribute. @param [Hash] options @option options [Boolean] :set (false) When true this attribute
can have multiple values.
A convenience method for adding the standard two datetime attributes +:created_at+ and +:updated_at+.
@example
class Recipe < AWS::Record::HashModel timestamps end recipe = Recipe.new recipe.save recipe.created_at #=> <DateTime ...> recipe.updated_at #=> <DateTime ...>