module FriendlyId::Mobility

Constants

VERSION

Public Class Methods

friendly() click to toggle source
Calls superclass method
# File lib/friendly_id/mobility.rb, line 25
def friendly
  super.extending(::Mobility::Plugins::ActiveRecord::Query::QueryExtension)
end
included(model_class) click to toggle source
# File lib/friendly_id/mobility.rb, line 21
def included(model_class)
  advise_against_untranslated_model(model_class)

  mod = Module.new do
    def friendly
      super.extending(::Mobility::Plugins::ActiveRecord::Query::QueryExtension)
    end
  end
  model_class.send :extend, mod
end
setup(model_class) click to toggle source
# File lib/friendly_id/mobility.rb, line 8
def setup(model_class)
  model_class.friendly_id_config.use :slugged
  if model_class.friendly_id_config.uses? :history
    model_class.instance_eval do
      friendly_id_config.finder_methods = FriendlyId::Mobility::FinderMethods
    end
  end
  if model_class.friendly_id_config.uses? :finders
    warn "[FriendlyId] The Mobility add-on is not compatible with the Finders add-on. " \
      "Please remove one or the other from the #{model_class} model."
  end
end

Private Class Methods

advise_against_untranslated_model(model) click to toggle source
# File lib/friendly_id/mobility.rb, line 32
def advise_against_untranslated_model(model)
  field = model.friendly_id_config.query_field
  if model.included_modules.grep(::Mobility::Translations).empty? || model.mobility_attributes.exclude?(field)
    raise "[FriendlyId] You need to translate the '#{field}' field with " \
      "Mobility (add 'translates :#{field}' in your model '#{model.name}')"
  end
end

Public Instance Methods

set_friendly_id(text, locale = nil) click to toggle source
# File lib/friendly_id/mobility.rb, line 42
def set_friendly_id(text, locale = nil)
  ::Mobility.with_locale(locale || ::Mobility.locale) do
    set_slug normalize_friendly_id(text)
  end
end
set_slug(normalized_slug = nil) click to toggle source
Calls superclass method
# File lib/friendly_id/mobility.rb, line 52
def set_slug(normalized_slug = nil)
  super
  changed.each do |change|
    if change =~ /\A(?:#{friendly_id_config.base}|#{friendly_id_config.slug_column})_([a-z]{2}(_[a-z]{2})?)\Z/
      locale, suffix = $1.split('_'.freeze)
      locale = "#{locale}-#{suffix.upcase}".freeze if suffix
      ::Mobility.with_locale(locale) { super }
    end
  end
end
should_generate_new_friendly_id?() click to toggle source
# File lib/friendly_id/mobility.rb, line 48
def should_generate_new_friendly_id?
  send(friendly_id_config.slug_column, locale: ::Mobility.locale).nil?
end