lib/kredis/attributes.rb in kredis-0.1.0 vs lib/kredis/attributes.rb in kredis-0.1.1

- old
+ new

@@ -23,9 +23,25 @@ else instance_variable_set(ivar_symbol, Kredis.unique_list(kredis_key_for_attribute(name), limit: limit, config: config)) end end end + + def kredis_flag(name, config: :shared) + ivar_symbol = :"@#{name}_kredis_flag" + + define_method(name) do + if instance_variable_defined?(ivar_symbol) + instance_variable_get(ivar_symbol) + else + instance_variable_set(ivar_symbol, Kredis.flag(kredis_key_for_attribute(name), config: config)) + end + end + + define_method("#{name}?") do + instance_variable_defined?(ivar_symbol) && instance_variable_get(ivar_symbol).marked? + end + end end private def kredis_key_for_attribute(name) "#{self.class.name.tableize.gsub("/", ":")}:#{id}:#{name}"