module RedisModelExtension::ClassValidations
Public Instance Methods
valid_alias_key?(alias_name, args = {})
click to toggle source
Validates if key by alias name and arguments is valid (all needed fields are not nil!)
# File lib/redis-model-extension/validation.rb, line 20 def valid_alias_key? alias_name, args = {} raise ArgumentError, "Unknown dynamic alias, use: #{redis_alias_config.keys.join(", ")}" unless redis_alias_config.has_key?(alias_name.to_sym) #normalize input hash of arguments args = HashWithIndifferentAccess.new(args) config = redis_alias_config[alias_name.to_sym] # use all specified keys config[:main_fields].each do |key| return false unless valid_item_for_redis_key? args, key end # is dynamic alias? if config[:order_field] && config[:args_field] #check if input arguments has order field if args.has_key?(config[:order_field]) && args[config[:order_field]] && args.has_key?(config[:args_field]) && args[config[:args_field]] #use filed order from defined field in args args[config[:order_field]].each do |key| return false unless valid_item_for_redis_key? args[config[:args_field]], key end else return false end end return true end
valid_item_for_redis_key?(args, key)
click to toggle source
validate one item of redis key
# File lib/redis-model-extension/validation.rb, line 51 def valid_item_for_redis_key? args, key (args.has_key?(key) && !args[key].nil?) || redis_fields_config[key] == :autoincrement end
valid_key?(args = {})
click to toggle source
Validates if key by arguments is valid (all needed fields are not nil!)
# File lib/redis-model-extension/validation.rb, line 7 def valid_key? args = {} #normalize input hash of arguments args = HashWithIndifferentAccess.new(args) redis_key_config.each do |key| return false unless valid_item_for_redis_key? args, key end return true end
Private Instance Methods
validate_redis_key()
click to toggle source
look for bad cofiguration in redis key and raise argument error
# File lib/redis-model-extension/validation.rb, line 58 def validate_redis_key valid_fields = redis_fields_config.select{|k,v| v != :array && v != :hash }.keys bad_fields = redis_key_config - valid_fields raise ArgumentError, "Sorry, but you cannot use as redis key [nonexisting | array | hash] fields: [#{bad_fields.join(",")}], availible are: #{valid_fields.join(", ")}" unless bad_fields.size == 0 end