Module: Globalize::ActiveRecord::ClassMethods
- Defined in:
- lib/globalize/active_record/class_methods.rb
Instance Method Summary collapse
- #columns_hash ⇒ Object
- #required_attributes ⇒ Object
- #required_translated_attributes ⇒ Object
- #translated?(name) ⇒ Boolean
- #translated_column_name(name) ⇒ Object
- #translation_class ⇒ Object
- #translations_table_name ⇒ Object
- #with_locales(*locales) ⇒ Object
- #with_required_attributes ⇒ Object
- #with_translated_attribute(name, value, locales = Globalize.fallbacks) ⇒ Object
- #with_translations(*locales) ⇒ Object
Instance Method Details
#columns_hash ⇒ Object
7 8 9 |
# File 'lib/globalize/active_record/class_methods.rb', line 7 def columns_hash super.except(*translated_attribute_names.map(&:to_s)) end |
#required_attributes ⇒ Object
41 42 43 44 |
# File 'lib/globalize/active_record/class_methods.rb', line 41 def required_attributes warn 'required_attributes is deprecated and will be removed in the next release of Globalize.' validators.map { |v| v.attributes if v.is_a?(ActiveModel::Validations::PresenceValidator) }.flatten end |
#required_translated_attributes ⇒ Object
46 47 48 49 |
# File 'lib/globalize/active_record/class_methods.rb', line 46 def required_translated_attributes warn 'required_translated_attributes is deprecated and will be removed in the next release of Globalize.' translated_attribute_names & required_attributes end |
#translated?(name) ⇒ Boolean
37 38 39 |
# File 'lib/globalize/active_record/class_methods.rb', line 37 def translated?(name) translated_attribute_names.include?(name.to_sym) end |
#translated_column_name(name) ⇒ Object
72 73 74 |
# File 'lib/globalize/active_record/class_methods.rb', line 72 def translated_column_name(name) "#{translation_class.table_name}.#{name}" end |
#translation_class ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/globalize/active_record/class_methods.rb', line 51 def translation_class @translation_class ||= begin if self.const_defined?(:Translation, false) klass = self.const_get(:Translation, false) else klass = self.const_set(:Translation, Class.new(Globalize::ActiveRecord::Translation)) end klass.belongs_to :globalized_model, class_name: self.name, foreign_key: [:foreign_key], inverse_of: :translations, touch: .fetch(:touch, false) klass end end |
#translations_table_name ⇒ Object
68 69 70 |
# File 'lib/globalize/active_record/class_methods.rb', line 68 def translations_table_name translation_class.table_name end |
#with_locales(*locales) ⇒ Object
12 13 14 |
# File 'lib/globalize/active_record/class_methods.rb', line 12 def with_locales(*locales) all.merge translation_class.with_locales(*locales) end |
#with_required_attributes ⇒ Object
23 24 25 26 27 28 |
# File 'lib/globalize/active_record/class_methods.rb', line 23 def with_required_attributes warn 'with_required_attributes is deprecated and will be removed in the next release of Globalize.' required_translated_attributes.inject(all) do |scope, name| scope.where("#{translated_column_name(name)} IS NOT NULL") end end |
#with_translated_attribute(name, value, locales = Globalize.fallbacks) ⇒ Object
30 31 32 33 34 35 |
# File 'lib/globalize/active_record/class_methods.rb', line 30 def with_translated_attribute(name, value, locales = Globalize.fallbacks) with_translations.where( translated_column_name(name) => value, translated_column_name(:locale) => Array(locales).map(&:to_s) ) end |
#with_translations(*locales) ⇒ Object
16 17 18 19 20 21 |
# File 'lib/globalize/active_record/class_methods.rb', line 16 def with_translations(*locales) locales = translated_locales if locales.empty? preload(:translations).joins(:translations).readonly(false).with_locales(locales).tap do |query| query.distinct! unless locales.flatten.one? end end |