module FriendlyId::I18n::ClassMethods

Public Instance Methods

exists_by_friendly_id?(id, locale = ::I18n.locale) click to toggle source
# File lib/para/i18n/friendly_id.rb, line 52
def exists_by_friendly_id?(id, locale = ::I18n.locale)
  if (exists = by_friendly_id(id, locale).exists?)
    exists
  elsif (fallback_locale = Para::I18n::Fallbacks.i18n_fallback_for(locale)) &&
    fallback_locale != locale
  then
    exists_by_friendly_id?(id, fallback_locale)
  end
end

Private Instance Methods

by_friendly_id(id, locale = ::I18n.locale) click to toggle source
# File lib/para/i18n/friendly_id.rb, line 74
def by_friendly_id(id, locale = ::I18n.locale)
  if locale == ::I18n.default_locale
    where(friendly_id_config.query_field => id)
  else
    json_path = "{#{ locale },#{ friendly_id_config.query_field }}"
    where("_translations#>>'#{ json_path }' = ?", id)
  end
end
first_by_friendly_id(id, locale = ::I18n.locale) click to toggle source
# File lib/para/i18n/friendly_id.rb, line 64
def first_by_friendly_id(id, locale = ::I18n.locale)
  if (first = by_friendly_id(id, locale).first)
    first
  elsif (fallback_locale = Para::I18n::Fallbacks.i18n_fallback_for(locale)) &&
    fallback_locale != locale
  then
    first_by_friendly_id(id, fallback_locale)
  end
end