use message in context

This commit is contained in:
Barnabas Jovanovics 2024-07-23 11:55:25 +02:00
parent 7bc3099950
commit c4e0bebeb1

View file

@ -17,7 +17,7 @@ defmodule HasNoComments do
@moduledoc false @moduledoc false
use Ash.Resource.Validation use Ash.Resource.Validation
def atomic(changeset, opts, _context) do def atomic(changeset, _opts, context) do
# Test multiple types of aggregates in a single validation # Test multiple types of aggregates in a single validation
condition = condition =
case changeset.context.aggregate do case changeset.context.aggregate do
@ -42,7 +42,7 @@ defmodule HasNoComments do
{:atomic, [], condition, {:atomic, [], condition,
expr( expr(
error(^Ash.Error.Changes.InvalidChanges, %{ error(^Ash.Error.Changes.InvalidChanges, %{
message: ^opts[:message] || "Post has comments" message: ^context.message || "Post has comments"
}) })
)} )}
] ]
@ -129,21 +129,31 @@ defmodule AshPostgres.Test.Post do
end end
destroy :destroy_if_no_comments do destroy :destroy_if_no_comments do
validate({HasNoComments, message: "Can only delete if Post has no comments"}) validate HasNoComments do
message "Can only delete if Post has no comments"
end
end end
update :update_if_no_comments do update :update_if_no_comments do
validate({HasNoComments, message: "Can only update if Post has no comments"}) validate HasNoComments do
message "Can only update if Post has no comments"
end
end end
destroy :destroy_if_no_comments_non_atomic do destroy :destroy_if_no_comments_non_atomic do
require_atomic?(false) require_atomic?(false)
validate({HasNoComments, message: "Can only delete if Post has no comments"})
validate HasNoComments do
message "Can only delete if Post has no comments"
end
end end
update :update_if_no_comments_non_atomic do update :update_if_no_comments_non_atomic do
require_atomic?(false) require_atomic?(false)
validate({HasNoComments, message: "Can only update if Post has no comments"})
validate HasNoComments do
message "Can only update if Post has no comments"
end
end end
update :update_only_freds do update :update_only_freds do