Sha256: 8ba931d32387cb5fbb283ef50e16ea31ecbf0fe332541c181e685e70ee304270

Contents?: true

Size: 715 Bytes

Versions: 5

Compression:

Stored size: 715 Bytes

Contents

require "friendly_id"

module HasPermalink
  def self.included(base)
    base.extend ClassMethods
  end

  module ClassMethods
    def has_permalink column, options={}
      extend FriendlyId

      friendly_id column do |config|
        config.use :slugged, :finders
        if options[:scope]
          config.use :scoped
          config.scope = options[:scope]
        end
        config.slug_column = options[:url_attribute]
      end

      self.class_eval do
        def should_generate_new_friendly_id?
          permalink.blank?
        end
      end

      define_method :"#{options[:url_attribute]}=" do |value|
        value = value.parameterize if value
        super value
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
adva-0.1.4 lib/has_permalink.rb
adva-0.1.3 lib/has_permalink.rb
adva-0.1.2 lib/has_permalink.rb
adva-0.1.1 lib/has_permalink.rb
adva-0.1.0 lib/has_permalink.rb