class FromClauseTranslate::Fallback
Attributes
fallback[R]
model[R]
Public Class Methods
new(model, hash)
click to toggle source
# File lib/from_clause_translate/fallback.rb, line 4 def initialize(model, hash) @model = model @fallback = hash[:fallback] if fallback.nil? create_fallback_from_i18n(hash[:name]) elsif !fallback.is_a? Hash @fallback = {_: fallback} end end
Public Instance Methods
wrap(selection, column, locale)
click to toggle source
# File lib/from_clause_translate/fallback.rb, line 15 def wrap(selection, column, locale) wrap_with_fallbacks selection, fallback[locale], column, locale wrap_with_fallbacks selection, fallback[:_], column, locale selection end
Private Instance Methods
create_fallback_from_i18n(column)
click to toggle source
# File lib/from_clause_translate/fallback.rb, line 39 def create_fallback_from_i18n(column) if I18n.fallbacks.empty? # invoke fallbacks generation I18n.available_locales.each { |locale| I18n.fallbacks[locale] } end @fallback = {} I18n.fallbacks.each do |locale, array| result = [] fallback[locale] = result array.each do |fallback| result << "#{column}_#{fallback}" unless fallback == locale end end end
wrap_with_fallbacks(selection, fallbacks, column, locale)
click to toggle source
# File lib/from_clause_translate/fallback.rb, line 23 def wrap_with_fallbacks(selection, fallbacks, column, locale) return unless fallbacks if fallbacks.is_a? Array fallbacks.each do |fallback| wrap_with_fallbacks selection, fallback, column, locale end return end fallbacks = "#{model.table_name}.#{fallbacks}" if fallbacks.is_a? Symbol return if fallbacks == "#{model.table_name}.#{column}_#{locale}" selection.replace "COALESCE(#{selection}, #{fallbacks})" end