module Avram::Slugify
Overview
Converts a column value to a URL safe String that
can be used as a parameter for finding records. A
slug is a String column you define on your model
that will be passed through the URL instead of an id.
e.g. /articles/1 -> /articles/how-to-slugify
Use this module in your SaveOperation#before_save.
class Article < BaseModel
  table do
    column title : String
    column slug : String
  end
end
class SaveArticle < Article::SaveOperation
  before_save do
    Avram::Slugify.set slug,
      using: title,
      query: ArticleQuery.new
  end
endThe #set method will use query to determine if that slug has already
been used, and fall back to appending a random UUID to the end. If the slug
value has already been set, then no new slug will be generated. If you just need
the value to set on your own, you can use the #generate method as an escape hatch.
This method returns the String value used in the #set method.
class SaveArticle < Article::SaveOperation
  before_save do
    if title.changed?
      slug_value = Avram::Slugify.generate(slug,
        using: title,
        query: ArticleQuery.new)
      slug.value = slug_value
    end
  end
endExtended Modules
Defined in:
avram/slugify.crInstance Method Summary
- #generate(slug : Avram::Attribute(String), using slug_candidate : Avram::Attribute(String) | String, query : Avram::Queryable) : String | Nil
- #generate(slug : Avram::Attribute(String), using slug_candidates : Array(String | Avram::Attribute(String) | Array(Avram::Attribute(String))), query : Avram::Queryable) : String | Nil
- #set(slug : Avram::Attribute(String), using slug_candidate : Avram::Attribute(String) | String, query : Avram::Queryable) : Nil
- #set(slug : Avram::Attribute(String), using slug_candidates : Array(String | Avram::Attribute(String) | Array(Avram::Attribute(String))), query : Avram::Queryable) : Nil
Instance Method Detail
        
        def generate(slug : Avram::Attribute(String), using slug_candidate : Avram::Attribute(String) | String, query : Avram::Queryable) : String | Nil
        #
      
      
      
        
        def generate(slug : Avram::Attribute(String), using slug_candidates : Array(String | Avram::Attribute(String) | Array(Avram::Attribute(String))), query : Avram::Queryable) : String | Nil
        #
      
      
      
        
        def set(slug : Avram::Attribute(String), using slug_candidate : Avram::Attribute(String) | String, query : Avram::Queryable) : Nil
        #
      
      
      
        
        def set(slug : Avram::Attribute(String), using slug_candidates : Array(String | Avram::Attribute(String) | Array(Avram::Attribute(String))), query : Avram::Queryable) : Nil
        #