Sha256: f1ee2c948b4bd6f0447c48e6cc3249c2f998e7113d365176311c0c1b8531dcf2
Contents?: true
Size: 1.49 KB
Versions: 18
Compression:
Stored size: 1.49 KB
Contents
# encoding: utf-8 module Mongoid # :nodoc: module Relations #:nodoc: # This module contains the behaviour for handling polymorphic relational # associations. module Polymorphic extend ActiveSupport::Concern included do class_attribute :polymorphic delegate :polymorphic?, :to => "self.class" end module ClassMethods #:nodoc: # Attempts to set up the information needed to handle a polymorphic # relation, if the metadata checks out. # # @example Set up the polymorphic information. # Movie.polymorph(metadata) # # @param [ Metadata ] metadata The relation metadata. # # @return [ Class ] The class being set up. # # @since 2.0.0.rc.1 def polymorph(metadata) tap do |klass| if metadata.polymorphic? klass.polymorphic = true if metadata.relation.stores_foreign_key? field(metadata.inverse_type, :type => String) end end end end # Determines if the class is in a polymorphic relations, and thus must # store the _type field in the database. # # @example Check if the class is polymorphic. # Movie.polymorphic? # # @return [ true, false ] True if polymorphic, false if not. # # @since 2.0.0.rc.1 def polymorphic? !!polymorphic end end end end end
Version data entries
18 entries across 18 versions & 3 rubygems