module Mongoid::Alize::Macros
Attributes
alize_from_callbacks[RW]
alize_to_callbacks[RW]
Public Instance Methods
alize(relation, *fields)
click to toggle source
# File lib/mongoid/alize/macros.rb, line 7 def alize(relation, *fields) alize_from(relation, *fields) metadata = self.relations[relation.to_s] unless _alize_unknown_inverse?(metadata) metadata.klass.alize_to(metadata.inverse, *fields) end end
alize_from(relation, *fields)
click to toggle source
# File lib/mongoid/alize/macros.rb, line 15 def alize_from(relation, *fields) one, many = _alize_relation_types from_one = Mongoid::Alize::Callbacks::From::One from_many = Mongoid::Alize::Callbacks::From::Many klass = self metadata = klass.relations[relation.to_s] relation_superclass = metadata.relation.superclass callback_klass = case [relation_superclass] when [one] then from_one when [many] then from_many end options = fields.extract_options! if options[:fields] fields = options[:fields] elsif fields.empty? && !_alize_unknown_inverse?(metadata) fields = metadata.klass.default_alize_fields end (klass.alize_from_callbacks ||= []) << callback = callback_klass.new(klass, relation, fields) callback.attach end
alize_to(relation, *fields)
click to toggle source
# File lib/mongoid/alize/macros.rb, line 44 def alize_to(relation, *fields) one, many = _alize_relation_types klass = self metadata = klass.relations[relation.to_s] relation_superclass = metadata.relation.superclass options = fields.extract_options! if options[:fields] fields = options[:fields] elsif fields.empty? fields = klass.default_alize_fields end (klass.alize_to_callbacks ||= []) << callback = Mongoid::Alize::ToCallback.new(klass, relation, fields) callback.attach end
default_alize_fields()
click to toggle source
# File lib/mongoid/alize/macros.rb, line 64 def default_alize_fields self.fields.reject { |name, field| name =~ /^_/ }.keys end
Private Instance Methods
_alize_relation_types()
click to toggle source
# File lib/mongoid/alize/macros.rb, line 78 def _alize_relation_types one = Mongoid::Relations::One many = Mongoid::Relations::Many def (many).==(klass) [Mongoid::Relations::Many, Mongoid::Relations::Referenced::Many].map(&:name).include?(klass.name) end [one, many] end
_alize_unknown_inverse?(metadata)
click to toggle source
# File lib/mongoid/alize/macros.rb, line 72 def _alize_unknown_inverse?(metadata) (metadata.polymorphic? && metadata.stores_foreign_key?) || metadata.klass.nil? || metadata.inverse.nil? end