Module: HasLocalizationTable::ActiveRecord::Relation

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

Defined Under Namespace

Modules: InstanceMethods

Constant Summary collapse

RESERVED_KEYS =
[:association_name, :required, :optional, :dependent, :has_one, :include, :build_missing]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(klass) ⇒ Object



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

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



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

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