Module: Globalize::ActiveRecord::TranslatedAttributesQuery
- Defined in:
- lib/globalize/active_record/translated_attributes_query.rb
Defined Under Namespace
Classes: WhereChain
Instance Method Summary collapse
- #calculate(*args) ⇒ Object
- #exists?(conditions = :none) ⇒ Boolean
- #group(*columns) ⇒ Object
- #having(opts, *rest) ⇒ Object
- #join_translations(relation = self) ⇒ Object
- #order(opts, *rest) ⇒ Object
- #parse_translated_conditions(opts) ⇒ Object
- #pluck(*column_names) ⇒ Object
- #reorder(opts, *rest) ⇒ Object
- #select(*columns) ⇒ Object
- #where(opts = :chain, *rest) ⇒ Object
- #with_translations_in_fallbacks ⇒ Object
Instance Method Details
#calculate(*args) ⇒ Object
72 73 74 75 76 77 78 79 80 |
# File 'lib/globalize/active_record/translated_attributes_query.rb', line 72 def calculate(*args) column_name = args[1] if respond_to?(:translated_attribute_names) && translated_column?(column_name) args[1] = translated_column_name(column_name) join_translations.calculate(*args) else super end end |
#exists?(conditions = :none) ⇒ Boolean
64 65 66 67 68 69 70 |
# File 'lib/globalize/active_record/translated_attributes_query.rb', line 64 def exists?(conditions = :none) if parsed = parse_translated_conditions(conditions) with_translations_in_fallbacks.exists?(parsed) else super end end |
#group(*columns) ⇒ Object
48 49 50 51 52 53 54 |
# File 'lib/globalize/active_record/translated_attributes_query.rb', line 48 def group(*columns) if respond_to?(:translated_attribute_names) && parsed = parse_translated_columns(columns) join_translations super(parsed) else super end end |
#having(opts, *rest) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/globalize/active_record/translated_attributes_query.rb', line 24 def having(opts, *rest) if parsed = parse_translated_conditions(opts) join_translations(super(parsed, *rest)) else super end end |
#join_translations(relation = self) ⇒ Object
102 103 104 105 106 107 108 |
# File 'lib/globalize/active_record/translated_attributes_query.rb', line 102 def join_translations(relation = self) if relation.joins_values.include?(:translations) relation else relation.with_translations_in_fallbacks end end |
#order(opts, *rest) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/globalize/active_record/translated_attributes_query.rb', line 32 def order(opts, *rest) if respond_to?(:translated_attribute_names) && parsed = parse_translated_order(opts) join_translations super(parsed) else super end end |
#parse_translated_conditions(opts) ⇒ Object
94 95 96 97 98 99 100 |
# File 'lib/globalize/active_record/translated_attributes_query.rb', line 94 def parse_translated_conditions(opts) if opts.is_a?(Hash) && respond_to?(:translated_attribute_names) && (keys = opts.symbolize_keys.keys & translated_attribute_names).present? opts = opts.dup keys.each { |key| opts[translated_column_name(key)] = opts.delete(key) || opts.delete(key.to_s) } opts end end |
#pluck(*column_names) ⇒ Object
82 83 84 85 86 87 88 |
# File 'lib/globalize/active_record/translated_attributes_query.rb', line 82 def pluck(*column_names) if respond_to?(:translated_attribute_names) && parsed = parse_translated_columns(column_names) join_translations.pluck(*parsed) else super end end |
#reorder(opts, *rest) ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/globalize/active_record/translated_attributes_query.rb', line 40 def reorder(opts, *rest) if respond_to?(:translated_attribute_names) && parsed = parse_translated_order(opts) join_translations super(parsed) else super end end |
#select(*columns) ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/globalize/active_record/translated_attributes_query.rb', line 56 def select(*columns) if respond_to?(:translated_attribute_names) && parsed = parse_translated_columns(columns) join_translations super(parsed) else super end end |
#where(opts = :chain, *rest) ⇒ Object
14 15 16 17 18 19 20 21 22 |
# File 'lib/globalize/active_record/translated_attributes_query.rb', line 14 def where(opts = :chain, *rest) if opts == :chain WhereChain.new(spawn) elsif parsed = parse_translated_conditions(opts) join_translations(super(parsed, *rest)) else super end end |