avram
avram copied to clipboard
Extract module for overriding `find` with Slugify
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