module Mongoid::Shardable::ClassMethods
Public Instance Methods
shard_key(*args)
click to toggle source
Specifies a shard key with the field(s) specified.
@example Specify the shard key.
class Person include Mongoid::Document field :first_name, :type => String field :last_name, :type => String shard_key first_name: 1, last_name: 1 end
@since 2.0.0
# File lib/mongoid/shardable.rb, line 102 def shard_key(*args) unless args.first.is_a?(Hash) # Shorthand syntax if args.last.is_a?(Hash) raise ArgumentError, 'Shorthand shard_key syntax does not permit options' end spec = Hash[args.map do |name| [name, 1] end] return shard_key(spec) end if args.length > 2 raise ArgumentError, 'Full shard_key syntax requires 1 or 2 arguments' end spec, options = args spec = Hash[spec.map do |name, value| if value.is_a?(Symbol) value = value.to_s end [database_field_name(name).to_sym, value] end] self.shard_key_fields = spec.keys self.shard_config = { key: spec.freeze, options: (options || {}).dup.freeze, }.freeze end