defmodule Frenzy.Rule do use Ecto.Schema import Ecto.Changeset schema "rules" do field :mode, :string field :property, :string field :param, :string field :weight, :integer field :delete, :boolean, virtual: true belongs_to :filter, Frenzy.Filter timestamps() end @doc false def changeset(rule, attrs) do rule |> cast(attrs, [:mode, :property, :param, :weight, :delete]) |> set_delete_action() |> validate_required([:mode, :property, :param, :weight]) end def set_delete_action(changeset) do if get_change(changeset, :delete) do %{changeset | action: :delete} else changeset end end end