• Stars
    star
    40
  • Rank 680,660 (Top 14 %)
  • Language
    Elixir
  • Created almost 10 years ago
  • Updated about 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ecto extension for ordered models

EctoOrdered

Ecto extension to support ordered list items. Similar to acts_as_list, but for Ecto

Examples

# Global positioning
defmodule MyModel do
  use Ecto.Schema
  import EctoOrdered

  schema "models" do
    field :position, :integer, virtual: true
    field, :rank, :integer
  end
  
  def changeset(model, params) do
    model
    |> cast(params, [], [:position])
    |> set_order(:position)
  end
end

# Scoped positioning
defmodule MyModel do
  use Ecto.Model
  use EctoOrdered, scope: :reference_id

  schema "models" do
    field :reference_id, :integer
    field :position,     :integer, virtual: true
  end
  
  def changeset(model, params) do
    model
    |> cast(params, [], [:position, :reference_id])
    |> set_order(:position, :reference_id)
  end
end