class Mongoid::Alize::Callback
Attributes
debug[RW]
denorm_attrs[RW]
inverse_klass[RW]
inverse_metadata[RW]
inverse_relation[RW]
klass[RW]
metadata[RW]
relation[RW]
Public Class Methods
new(_klass, _relation, _denorm_attrs)
click to toggle source
# File lib/mongoid/alize/callback.rb, line 17 def initialize(_klass, _relation, _denorm_attrs) self.debug = ENV["ALIZE_DEBUG"] self.klass = _klass self.relation = _relation self.denorm_attrs = _denorm_attrs self.metadata = _klass.relations[_relation.to_s] if !(self.metadata.polymorphic? && self.metadata.stores_foreign_key?) self.inverse_klass = self.metadata.klass self.inverse_relation = self.metadata.inverse self.inverse_metadata = self.inverse_klass.relations[inverse_relation.to_s] end end
Public Instance Methods
alias_callback()
click to toggle source
# File lib/mongoid/alize/callback.rb, line 46 def alias_callback unless callback_defined?(aliased_callback_name) klass.send(:alias_method, aliased_callback_name, callback_name) klass.send(:public, aliased_callback_name) end end
aliased_callback_name()
click to toggle source
# File lib/mongoid/alize/callback.rb, line 57 def aliased_callback_name :"denormalize_#{direction}_#{relation}" end
attach()
click to toggle source
# File lib/mongoid/alize/callback.rb, line 33 def attach # implement in subclasses end
callback_attached?(callback_type, callback_name)
click to toggle source
# File lib/mongoid/alize/callback.rb, line 37 def callback_attached?(callback_type, callback_name) !!klass.send(:"_#{callback_type}_callbacks"). map(&:raw_filter).include?(callback_name) end
callback_defined?(callback_name)
click to toggle source
# File lib/mongoid/alize/callback.rb, line 42 def callback_defined?(callback_name) klass.method_defined?(callback_name) end
callback_name()
click to toggle source
# File lib/mongoid/alize/callback.rb, line 53 def callback_name :"_#{aliased_callback_name}" end
define_denorm_attrs()
click to toggle source
# File lib/mongoid/alize/callback.rb, line 61 def define_denorm_attrs _denorm_attrs = denorm_attrs if denorm_attrs.is_a?(Proc) klass.send(:define_method, denorm_attrs_name) do |inverse| self.instance_exec(inverse, &_denorm_attrs).map(&:to_s) end else klass.send(:define_method, denorm_attrs_name) do |inverse| _denorm_attrs.map(&:to_s) end end end
denorm_attrs_name()
click to toggle source
# File lib/mongoid/alize/callback.rb, line 74 def denorm_attrs_name :"#{callback_name}_attrs" end
field_values(source, options={})
click to toggle source
# File lib/mongoid/alize/callback.rb, line 78 def field_values(source, options={}) extras = options[:id] ? "['_id']" : "[]" <<-RUBY value = (#{denorm_attrs_name}(#{source}) + #{extras}).inject({}) do |hash, name| hash[name] = #{source}.send(name) hash end value.respond_to?(:mongoize) ? value.mongoize : value RUBY end
fields_to_s()
click to toggle source
# File lib/mongoid/alize/callback.rb, line 97 def fields_to_s if fields.is_a?(Proc) "Proc Given" else fields.join(", ") end end
force_check()
click to toggle source
# File lib/mongoid/alize/callback.rb, line 93 def force_check "force || self.force_denormalization" end
force_param()
click to toggle source
# File lib/mongoid/alize/callback.rb, line 89 def force_param "(force=false)" end
to_s()
click to toggle source
# File lib/mongoid/alize/callback.rb, line 105 def to_s "#{self.class.name}" + "\nModel: #{self.klass}, Relation: #{self.relation}" + (self.metadata.polymorphic? ? "\nPolymorphic" : "\nInverse: #{self.inverse_klass}, Relation: #{self.inverse_relation}") + "\nFields: #{fields_to_s}" end