add action changes for email sync
This commit is contained in:
parent
91c5e17994
commit
5a0a261cd6
7 changed files with 331 additions and 0 deletions
|
|
@ -48,6 +48,9 @@ defmodule Mv.Membership.Member do
|
|||
# If no user provided, that's fine (optional relationship)
|
||||
on_missing: :ignore
|
||||
)
|
||||
|
||||
# Override member email with user email when linking
|
||||
change Mv.Membership.Member.Changes.OverrideEmailFromUserOnLink
|
||||
end
|
||||
|
||||
update :update_member do
|
||||
|
|
@ -89,6 +92,11 @@ defmodule Mv.Membership.Member do
|
|||
# If no user provided, remove existing relationship (allows user removal)
|
||||
on_missing: :unrelate
|
||||
)
|
||||
|
||||
# Override member email with user email when linking
|
||||
change Mv.Membership.Member.Changes.OverrideEmailFromUserOnLink
|
||||
# Sync email changes to linked user
|
||||
change Mv.Membership.Member.Changes.SyncEmailToUser
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -189,6 +197,14 @@ defmodule Mv.Membership.Member do
|
|||
constraints min_length: 1
|
||||
end
|
||||
|
||||
# IMPORTANT: Email Synchronization
|
||||
# When member and user are linked, emails are automatically synced bidirectionally.
|
||||
# User.email is the source of truth - when a link is established, member.email
|
||||
# is overridden to match user.email. Subsequent changes to either email will
|
||||
# sync to the other resource.
|
||||
# See: Mv.Membership.Member.Changes.SyncEmailToUser
|
||||
# Mv.Membership.Member.Changes.OverrideEmailFromUserOnLink
|
||||
# Mv.Accounts.User.Changes.SyncEmailToMember
|
||||
attribute :email, :string do
|
||||
allow_nil? false
|
||||
constraints min_length: 5, max_length: 254
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue