Module: Globalize::ActiveRecord::ClassMethods
- Defined in:
- lib/globalize/active_record/class_methods.rb
Instance Method Summary collapse
- #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
- #with_where(opts = {}) ⇒ Object
Instance Method Details
#required_attributes ⇒ Object
39 40 41 42 |
# File 'lib/globalize/active_record/class_methods.rb', line 39 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
44 45 46 47 |
# File 'lib/globalize/active_record/class_methods.rb', line 44 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
35 36 37 |
# File 'lib/globalize/active_record/class_methods.rb', line 35 def translated?(name) translated_attribute_names.include?(name.to_sym) end |
#translated_column_name(name) ⇒ Object
66 67 68 |
# File 'lib/globalize/active_record/class_methods.rb', line 66 def translated_column_name(name) "#{translation_class.table_name}.#{name}" end |
#translation_class ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/globalize/active_record/class_methods.rb', line 49 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] klass end end |
#translations_table_name ⇒ Object
62 63 64 |
# File 'lib/globalize/active_record/class_methods.rb', line 62 def translations_table_name translation_class.table_name end |
#with_locales(*locales) ⇒ Object
6 7 8 |
# File 'lib/globalize/active_record/class_methods.rb', line 6 def with_locales(*locales) all.merge translation_class.with_locales(*locales) end |
#with_required_attributes ⇒ Object
21 22 23 24 25 26 |
# File 'lib/globalize/active_record/class_methods.rb', line 21 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
28 29 30 31 32 33 |
# File 'lib/globalize/active_record/class_methods.rb', line 28 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
14 15 16 17 18 19 |
# File 'lib/globalize/active_record/class_methods.rb', line 14 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 |
#with_where(opts = {}) ⇒ Object
10 11 12 |
# File 'lib/globalize/active_record/class_methods.rb', line 10 def with_where(opts = {}) all.merge translation_class.where(opts) end |