fix: prevent nil assignment for membership_fee_type_id
Reject attempts to set membership_fee_type_id to nil when a current type exists.
This commit is contained in:
parent
032db2a4ba
commit
28b2be1125
1 changed files with 13 additions and 2 deletions
|
|
@ -42,9 +42,9 @@ defmodule Mv.MembershipFees.Changes.ValidateSameInterval do
|
|||
is_nil(current_type_id) ->
|
||||
changeset
|
||||
|
||||
# If new type is nil, that's allowed (removing type)
|
||||
# If new type is nil, reject the change (membership_fee_type_id is required)
|
||||
is_nil(new_type_id) ->
|
||||
changeset
|
||||
add_nil_type_error(changeset)
|
||||
|
||||
# Both types exist - validate intervals match
|
||||
true ->
|
||||
|
|
@ -125,6 +125,17 @@ defmodule Mv.MembershipFees.Changes.ValidateSameInterval do
|
|||
)
|
||||
end
|
||||
|
||||
# Add validation error when trying to set membership_fee_type_id to nil
|
||||
defp add_nil_type_error(changeset) do
|
||||
message = "Cannot remove membership fee type. A membership fee type is required."
|
||||
|
||||
Ash.Changeset.add_error(
|
||||
changeset,
|
||||
field: :membership_fee_type_id,
|
||||
message: message
|
||||
)
|
||||
end
|
||||
|
||||
# Format interval atom to human-readable string
|
||||
defp format_interval(:monthly), do: "monthly"
|
||||
defp format_interval(:quarterly), do: "quarterly"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue