Sha256: d30c5d540bd29701d10d9ba544b6c7199a45428b0bfad223241b9e9898e00d41
Contents?: true
Size: 933 Bytes
Versions: 6
Compression:
Stored size: 933 Bytes
Contents
module Mongocore class Filters # # # # # # # # # The Filters class is responsible for the before, after and validate filters. # # Accessors attr_accessor :klass, :before, :after, :validate # Init def initialize(klass) # Save model class @klass = klass # The before filters @before = Hash.new{|h, k| h[k] = []} # Add timestamp filters if enabled @before[:save] << :timestamps if Mongocore.timestamps # The after filters @after = Hash.new{|h, k| h[k] = []} # The validators @validate = [] end # Valid? def valid?(m) @validate.each{|k| call(k, m)}; m.errors.empty? end # Available filters are :save, :delete def run(m, f, key = nil) send(f)[key].each{|k| call(k, m)} end # Execute a proc or a method def call(k, m) k.is_a?(Proc) ? m.instance_eval(&k) : m.send(k) end end end
Version data entries
6 entries across 6 versions & 1 rubygems