module Redis::Props::Helper
Public Instance Methods
assign_values(new_values)
click to toggle source
:nodoc
# File lib/redis/props/helper.rb, line 110 def assign_values(new_values) new_values.each do |field, val| type = self.class.redis_prop_type(field) ivar_name = :"@#{field}" case type when :counter value = cast_value(type, val || try("#{field}_default_value")) instance_variable_set(ivar_name, value) when :timestamp if !val.nil? instance_variable_set(ivar_name, cast_value(type, val)) elsif self.class.redis_props[field][:allow_nil] instance_variable_set(ivar_name, nil) else value = cast_value(type, try("#{field}_default_value")) instance_variable_set(ivar_name, value) self.class.redis_prop_redis_pool(field).with do |conn| conn.hset(object_key, field, value) end end end end end
cast_value(type, value)
click to toggle source
# File lib/redis/props/helper.rb, line 78 def cast_value(type, value) case type.to_sym when :counter then value.to_i when :timestamp then value.to_i end end
object_key()
click to toggle source
Returns the Redis
Key of Redis::Props
, consists with Class name string in plural form and Instance id.
Example:
a User instance with id = 1 -> `users:1` a HolyLight::Spammer instance with id = 5 -> `holy_light/spammers:5`
@return [String]
# File lib/redis/props/helper.rb, line 73 def object_key raise Redis::Props::NilObjectId if self.id.nil? "#{self.class.to_s.pluralize.underscore}:#{self.id}" end
redis_props_mget(*names)
click to toggle source
批量取出当前对象的多个 Redis::Props
字段, 仅仅支持 counter / timestamp
@param [Array] names 需要检索的字段, 例如: :field1, :field2
@return [Model] 当前对象
# File lib/redis/props/helper.rb, line 91 def redis_props_mget(*names) pools_with_name = names.each_with_object({}) do |name, hash| pool = self.class.redis_prop_redis_pool(name) hash[pool] ||= [] hash[pool] << name end pools_with_name.each do |pool, fields| values = pool.with do |conn| conn.hmget(object_key, fields) end assign_values(fields.zip(values).to_h) end self end