Module: FriendlyId::I18n

Defined in:
lib/para/i18n/friendly_id.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(model_class) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/para/i18n/friendly_id.rb', line 10

def included(model_class)
  model_class.extend(ClassMethods)

  # Support for friendly finds on associations for Rails 4.0.1 and above.
  #
  # Borrowed from FriendlyId::Finders module
  #
  if ::ActiveRecord.const_defined?('AssociationRelation')
    association_relation_delegate_class = model_class.relation_delegate_class(::ActiveRecord::AssociationRelation)
    association_relation_delegate_class.send(:include, ClassMethods)
  end
end

.setup(model_class) ⇒ Object



6
7
8
# File 'lib/para/i18n/friendly_id.rb', line 6

def setup(model_class)
  model_class.friendly_id_config.use :slugged
end

Instance Method Details

#set_friendly_id(text, locale = nil) ⇒ Object



24
25
26
27
28
# File 'lib/para/i18n/friendly_id.rb', line 24

def set_friendly_id(text, locale = nil)
  ::I18n.with_locale(locale || ::I18n.locale) do
    set_slug(normalize_friendly_id(text))
  end
end

#set_slug(normalized_slug = nil) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/para/i18n/friendly_id.rb', line 34

def set_slug(normalized_slug = nil)
  return unless should_generate_new_friendly_id?

  candidates = FriendlyId::Candidates.new(self, normalized_slug || send(friendly_id_config.base))
  slug = slug_generator.generate(candidates) || resolve_friendly_id_conflict(candidates)
  self.slug = slug
end

#should_generate_new_friendly_id?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/para/i18n/friendly_id.rb', line 30

def should_generate_new_friendly_id?
  translation_for(::I18n.locale)[friendly_id_config.slug_column].blank?
end