Sha256: 6bde05de28c93c9506d110ee3ace996fe23cc6ac12db3a905c687be7f71f156b

Contents?: true

Size: 879 Bytes

Versions: 4

Compression:

Stored size: 879 Bytes

Contents

module StatusManager
	module StatusUpdateCallback
		def after_status_update(attribute_name, status_way, &block)
			self.after_update do |obj|
				self.class.send(:status_update_callback, obj, attribute_name, status_way, &block)
			end
		end

		def before_status_update(attribute_name, status_way, &block)
			self.before_update do |obj|
				self.class.send(:status_update_callback, obj, attribute_name, status_way, &block)
			end
		end
		
		def status_update_callback(obj, attribute_name, status_way, &block)
			if obj.send("#{attribute_name}_changed?") 
				if status_way.instance_of?(Hash)
					if obj.send("#{attribute_name}_changed?", {:from => status_way.first[0], :to => status_way.first[1]})
						block.call(obj)
					end
				elsif status_way.class == Symbol
					if obj.send("#{attribute_name}_#{status_way}?")
						block.call(obj)
					end
				end
			end
		end
	end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
status-manager-0.9.0 lib/status-manager/status_update_callback.rb
status-manager-0.8.5 lib/status-manager/status_update_callback.rb
status-manager-0.8.3 lib/status-manager/status_update_callback.rb
status-manager-0.8.1 lib/status-manager/status_update_callback.rb