Module: Mongoid::Shardable::ClassMethods
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
|
Extended In:
| |
| Defined in: | lib/mongoid/shardable.rb |
Instance Method Summary
-
#shard_key(*args)
Specifies a shard key with the field(s) specified.
Instance Method Details
#shard_key(*args)
Specifies a shard key with the field(s) specified.
# File 'lib/mongoid/shardable.rb', line 117
def shard_key(*args) unless args.first.is_a?(Hash) # Shorthand syntax raise ArgumentError, 'Shorthand shard_key syntax does not permit options' if args.last.is_a?(Hash) spec = Hash[args.map do |name| [ name, 1 ] end] return shard_key(spec) end raise ArgumentError, 'Full shard_key syntax requires 1 or 2 arguments' if args.length > 2 spec, = args spec = Hash[spec.map do |name, value| value = value.to_s if value.is_a?(Symbol) [ database_field_name(name).to_sym, value ] end] self.shard_key_fields = spec.keys self.shard_config = { key: spec.freeze, options: ( || {}).dup.freeze }.freeze end