Sha256: c209c0eeaadc21c49d8e8c746c4f237688f3323e5722b5d02b1b2a8f6fe8373c
Contents?: true
Size: 965 Bytes
Versions: 28
Compression:
Stored size: 965 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 [:save, :update].each{|f| @before[f] << :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, :update, :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
28 entries across 28 versions & 1 rubygems