Sha256: 18a5a61584b4cf7e8b9c8e78fb4661bd58f56d6b745d86975c845d3745077164

Contents?: true

Size: 1.55 KB

Versions: 54

Compression:

Stored size: 1.55 KB

Contents

# encoding: utf-8
module MagicAddresses
  module Translator
  
    def self.included(base)
      base.send :extend, ClassMethods
    end
  
    ##   C L A S S - M E T H O D S   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
    module ClassMethods
    
      def mgca_translate( field = :name )
        send :include, InstanceMethods
        
        translates field, fallbacks_for_empty_translations: true
        accepts_nested_attributes_for :translations, reject_if: proc { |attributes| attributes[field.to_s].blank? }
      end
    
    
    end #> ClassMethods
    
    
    ##   I N S T A N C E - M E T H O D S   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
    module InstanceMethods
      
      def with_translations(*locales)
        locales = translated_locales if locales.empty?
        includes(:translations).with_locales(locales).with_required_attributes
      end
      
      # need to be loaded so stupid, otherwise it is accessible for all model (tested with rspec)
      def self.included(base)
        base.send :extend, MoreClassMethods
      end
      
    end #> InstanceMethods
    
    ##   M O R E - M E T H O D S   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
    module MoreClassMethods
      
      def search(search)
        field = self.respond_to?(:street_name) ? :street_name : :name
        if search
          with_translations.where("#{field} LIKE ?", "%#{search}%")
        else
          with_translations
        end
      end
      
    end #> MoreClassMethods
    
  end
end

Version data entries

54 entries across 54 versions & 1 rubygems

Version Path
magic_addresses-0.0.44 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.43 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.42 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.41 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.40 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.39 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.39.rc8 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.39.rc7 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.39.rc6 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.39.rc5 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.39.rc4 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.39.rc3 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.39.rc2 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.39.rc1 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.38 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.38.beta2 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.38.beta1 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.37 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.36 lib/app/models/magic_addresses/translator.rb
magic_addresses-0.0.35 lib/app/models/magic_addresses/translator.rb