Module: HasLocalizationTable::ActiveRecord::Relation::InstanceMethods

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

Instance Method Summary collapse

Instance Method Details

#build_missing_localizations!Object

Add localization objects for any available locale that doesn’t have one



79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/has_localization_table/active_record/relation.rb', line 79

def build_missing_localizations!
  return unless HasLocalizationTable.all_locales.any?

  locale_ids = HasLocalizationTable.all_locales.map(&:id)
  assoc = association(localization_association_name).reader

  HasLocalizationTable.all_locales.each do |locale|
    unless assoc.detect{ |record| record.send(HasLocalizationTable.locale_foreign_key) == locale.id }
      assoc.build(HasLocalizationTable.locale_foreign_key => locale.id)
    end
  end

  assoc.sort_by!{ |l| locale_ids.index(l.send(HasLocalizationTable.locale_foreign_key)) || 0 }
end

#reject_empty_localizations!Object

Remove localization objects that are not filled in



95
96
97
# File 'lib/has_localization_table/active_record/relation.rb', line 95

def reject_empty_localizations!
  localization_association.reject! { |l| !l.persisted? && localized_attributes.all?{ |attr| l.send(attr).blank? } }
end