module ActsAsAliased::ClassMethods

Public Instance Methods

acts_as_aliased(options = {}) click to toggle source
# File lib/acts_as_aliased.rb, line 14
    def acts_as_aliased options = {}
      has_many :aliases, as: :aliased, class_name: ::ActsAsAliased::Alias

      cattr_accessor :associations
      cattr_accessor :column
      self.associations = options[:associations] || []
      self.column       = options[:column]       || 'name'

      class_eval <<-EOV
        include ActsAsAliased::InstanceMethods

        def self.lookup(value)
          return nil if value.blank?
          self.send("find_by_#{column}", value) ||
          Alias.where(["aliased_type = ? AND name = ?", self.to_s, value]).first.try(:aliased)
        end
      EOV
    end