module FriendlyId::MethodScopes

Constants

VERSION

Public Class Methods

included(model_class) click to toggle source

Sets up behavior and configuration options for FriendlyId::MethodScopes's method_scopes slugs feature.

# File lib/friendly_id/method_scopes.rb, line 12
def self.included(model_class)
  model_class.class_eval do
    friendly_id_config.class.send :include, Configuration
  end
end
setup(model_class) click to toggle source

FriendlyId::Config.use will invoke this method when present, to allow loading dependent modules prior to overriding them when necessary.

# File lib/friendly_id/method_scopes.rb, line 6
def self.setup(model_class)
  model_class.friendly_id_config.use :slugged
end
version_string() click to toggle source
# File lib/friendly_id/method_scopes/version.rb, line 5
def self.version_string
  "FriendlyId::MethodScopes version #{FriendlyId::MethodScopes::VERSION}"
end

Private Instance Methods

scope_for_slug_generator() click to toggle source

# This doesn't work yet, but will be used to hook up to the history module def serialized_scope

friendly_id_config.scope_method_columns.sort.map { |column, method| "#{column}:#{send(method)}" }.join(",")

end

# File lib/friendly_id/method_scopes.rb, line 23
def scope_for_slug_generator
  relation = self.class.unscoped.friendly
  friendly_id_config.scope_method_columns.each do |column, method|
    relation = relation.where(column => send(method))
  end
  primary_key_name = self.class.primary_key
  relation.where(self.class.arel_table[primary_key_name].not_eq(send(primary_key_name)))
end
slug_generator() click to toggle source
# File lib/friendly_id/method_scopes.rb, line 33
def slug_generator
  friendly_id_config.slug_generator_class.new(scope_for_slug_generator, friendly_id_config)
end