avram icon indicating copy to clipboard operation
avram copied to clipboard

Extract module for overriding `find` with Slugify

Open paulcsmith opened this issue 4 years ago • 0 comments

You can find record with Avram's built-in query methods.

ArticleQuery.new.slug("avram-is-a-great-orm").first

Or if you want to add a shortcut you can do something like this:

class ArticleQuery < Article::BaseQuery
   def find(slug_or_id : String | Int64) : Article
     if slug_or_id.is_a?(Int64)
       previous_def(slug_or_id)
    else
       slug(slug_or_id).first
    end
   end
end

# Find by slug
ArticleQuery.find("avram-is-a-great-orm") 
# Find by id
ArticleQuery.find(1_i64) 
# Can be scoped like any other query
ArticleQuery.new.account_id(account.id).find("avram-is-a-great-orm")

So you can just include AvramSlugify::Finder in your Query class

paulcsmith avatar Mar 30 '20 15:03 paulcsmith