Module: HasLocalizationTable::ActiveRecord::MetaMethods

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

Defined Under Namespace

Modules: InstanceMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(klass) ⇒ Object



4
5
6
# File 'lib/has_localization_table/active_record/meta_methods.rb', line 4

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

Instance Method Details

#localization_association_nameObject



12
13
14
# File 'lib/has_localization_table/active_record/meta_methods.rb', line 12

def localization_association_name
  localization_table_options[:association_name]
end

#localization_classObject



8
9
10
# File 'lib/has_localization_table/active_record/meta_methods.rb', line 8

def localization_class
  localization_table_options[:class_name].constantize
end

#localized_attribute_required?(attribute) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
34
35
36
# File 'lib/has_localization_table/active_record/meta_methods.rb', line 31

def localized_attribute_required?(attribute)
  return false unless localization_table_options[:required] || false
  return true unless localization_table_options[:optional]

  !localization_table_options[:optional].include?(attribute)
end

#localized_attributesObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/has_localization_table/active_record/meta_methods.rb', line 16

def localized_attributes
  # Determine which attributes of the association model should be accessible through the base class
  # ie. everything that's not a primary key, foreign key, or timestamp attribute
  association_name = self.localization_table_options[:association_name] || :strings
  association = reflect_on_association(association_name)

  attribute_names = association.klass.attribute_names
  timestamp_attrs = association.klass.new.send(:all_timestamp_attributes_in_model).map(&:to_s)
  foreign_keys = association.klass.reflect_on_all_associations.map{ |a| a.association_foreign_key }
  primary_keys = [association.klass.primary_key]
  # protected_attrs = association.klass.protected_attributes.to_a

  (attribute_names - timestamp_attrs - foreign_keys - primary_keys).map(&:to_sym)
end