Module: HasLocalizationTable::ActiveRecord::Relation

Defined in:
lib/has_localization_table/active_record/relation.rb

Defined Under Namespace

Modules: InstanceMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(klass) ⇒ Object



4
5
6
7
8
9
10
# File 'lib/has_localization_table/active_record/relation.rb', line 4

def self.extended(klass)
  klass.send(:include, InstanceMethods)
  klass.send(:create_localization_associations!)

  # Alias the scoping method to use the actual association name
  alias_method :"with_#{klass.localization_association_name}", :with_localizations
end

Instance Method Details

#with_localizations(locale = HasLocalizationTable.current_locale.id) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'lib/has_localization_table/active_record/relation.rb', line 12

def with_localizations(locale = HasLocalizationTable.current_locale.id)
  lcat = localization_class.arel_table
  
  scoped.joins(
    arel_table.join(lcat, Arel::Nodes::OuterJoin).
      on(lcat[:"#{self.name.underscore}_id"].eq(arel_table[self.primary_key]).and(lcat[HasLocalizationTable.locale_foreign_key].eq(locale))).
      join_sql
  )
end