Popularity
6.9
Growing
Activity
7.1
Growing
101
4
11

Monthly Downloads: 4,979
Programming language: Elixir
License: MIT License
Tags: Miscellaneous    
Latest version: v2.0.0

ecto_autoslug_field alternatives and similar packages

Based on the "Miscellaneous" category

Do you think we are missing an alternative of ecto_autoslug_field or a related project?

Add another 'Miscellaneous' Package

README

EctoAutoslugField

Build Status Coverage Status Hex Version License

ecto_autoslug_field is a reusable Ecto library which can automatically create slugs from other fields. We use slugger as a default slug-engine.

We only depend on the ecto package (we do not deal with ecto_sql at all). We support ecto >= 2.1 and ecto < 4!

See this blog post for more information.

Installation

def deps do
  [
    {:ecto_autoslug_field, "~> 2.0"}
  ]
end

Options

There are several options to configure.

Required:

  • :to - represents the slug field name where to save value to

Optional:

  • :from - represents the source fields from which to build slug, if this option is not set you have to override get_sources/2 function
  • :always_change - if this option is set slug will be recreated from the given sources each time maybe_generate_slug function is called

Functions

  • get_sources/2 - this function is used to get sources for the slug, docs.
  • build_slug/2 - this function is a place to modify the result slug, docs.

Examples

The simplest example:

defmodule EctoSlugs.Blog.Article.TitleSlug do
  use EctoAutoslugField.Slug, from: :title, to: :slug
end

defmodule EctoSlugs.Blog.Article do
  use Ecto.Schema
  import Ecto.Changeset
  alias EctoSlugs.Blog.Article
  alias EctoSlugs.Blog.Article.TitleSlug

  schema "blog_articles" do
    field :breaking, :boolean, default: false
    field :content, :string
    field :title, :string

    field :slug, TitleSlug.Type

    timestamps()
  end

  def changeset(%Article{} = article, attrs) do
    article
    |> cast(attrs, [:title, :content, :breaking])
    |> validate_required([:title, :content])
    |> unique_constraint(:title)
    |> TitleSlug.maybe_generate_slug
    |> TitleSlug.unique_constraint
  end
end

See this tutorial for some more examples.

Changelog

See CHANGELOG.md.

License

MIT. Please see LICENSE for licensing details.


*Note that all licence references and agreements mentioned in the ecto_autoslug_field README section above are relevant to that project's source code only.