Module: Globalize::ActiveRecord::TranslatedAttributesQuery

Defined in:
lib/globalize/active_record/translated_attributes_query.rb

Defined Under Namespace

Classes: WhereChain

Instance Method Summary collapse

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

Returns:

  • (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

#with_translations_in_fallbacksObject



90
91
92
# File 'lib/globalize/active_record/translated_attributes_query.rb', line 90

def with_translations_in_fallbacks
  with_translations(Globalize.fallbacks)
end