Sha256: 43ed02001734e5a1b18e87ccf080bdc64f5fd77b8a070b203b142866ca207ba2

Contents?: true

Size: 1.82 KB

Versions: 19

Compression:

Stored size: 1.82 KB

Contents

# encoding: utf-8
module MagicLocales
  module Association
  
    def self.included(base)
      base.send :extend, ClassMethods
    end
  
    ##   C L A S S - M E T H O D S   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
    module ClassMethods
      
      def has_one_language
        # send :include, InstanceMethods
        
        has_one   :language, 
                      -> { where(level: 'native', default: true) }, 
                      as:         :owner, 
                      class_name: "MagicLocales::Language", 
                      dependent:  :destroy
        
        accepts_nested_attributes_for :language,          allow_destroy: true,    reject_if: :all_blank
      end
      
      
      def has_languages
        # send :include, InstanceMethods
        
        has_many  :spoken_languages, 
                      as:         :owner, 
                      class_name: "MagicLocales::Language", 
                      dependent: :destroy
        
        has_many  :foreign_languages, 
                      -> { where.not(level: 'native') }, 
                      as:         :owner, 
                      class_name: "MagicLocales::Language", 
                      dependent:  :destroy
        
        has_many  :native_languages, 
                      -> { where(level: 'native') }, 
                      as:         :owner, 
                      class_name: "MagicLocales::Language", 
                      dependent:  :destroy
        
        accepts_nested_attributes_for :spoken_languages,  allow_destroy: true,    reject_if: :all_blank
      end
      
      
    end #> ClassMethods
  
    ##   I N S T A N C E - M E T H O D S   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
    module InstanceMethods
      
      # ...
      
    end #> InstanceMethods
  
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
magic_locales-0.0.17 lib/app/models/magic_locales/association.rb
magic_locales-0.0.17.beta2 lib/app/models/magic_locales/association.rb
magic_locales-0.0.17.beta1 lib/app/models/magic_locales/association.rb
magic_locales-0.0.16 lib/app/models/magic_locales/association.rb
magic_locales-0.0.15 lib/app/models/magic_locales/association.rb
magic_locales-0.0.14 lib/app/models/magic_locales/association.rb
magic_locales-0.0.13 lib/app/models/magic_locales/association.rb
magic_locales-0.0.12 lib/app/models/magic_locales/association.rb
magic_locales-0.0.11 lib/app/models/magic_locales/association.rb
magic_locales-0.0.10 lib/app/models/magic_locales/association.rb
magic_locales-0.0.9 lib/app/models/magic_locales/association.rb
magic_locales-0.0.8 lib/app/models/magic_locales/association.rb
magic_locales-0.0.7 lib/app/models/magic_locales/association.rb
magic_locales-0.0.6 lib/app/models/magic_locales/association.rb
magic_locales-0.0.5 lib/app/models/magic_locales/association.rb
magic_locales-0.0.4 lib/app/models/magic_locales/association.rb
magic_locales-0.0.3 lib/app/models/magic_locales/association.rb
magic_locales-0.0.2 lib/app/models/magic_locales/association.rb
magic_locales-0.0.1 lib/app/models/magic_locales/association.rb