Если конфликт не обновляется до значений по умолчанию - PullRequest
0 голосов
/ 11 мая 2018

У меня есть такая таблица пользователей

create table(:users) do
  add(:email, :citext)
  add(:email_confirmation_token, :string)
  add(:email_confirmed_at, :utc_datetime)
  add(:deleted_at, :utc_datetime)

  timestamps()
end

, и у меня есть User схема как

schema "users" do
  field(:email, :string)
  field(:deleted_at, :utc_datetime)
  field(:email_confirmed_at, :utc_datetime)
  field(:email_confirmation_token, :string, default: ExApi.Utils.Random.string())

  timestamps()
end

Теперь, если я вставляю запись с параметром on_conflict, я хочу сбросить deleted_at но удаленный_ат никогда не передается в набор изменений.Я использовал следующую строку кода

attrs = %{"email" => "tanweer.shahzaad@gmail.com", "deleted_at" => nil}
cs = %User{} |> User.changeset(attrs)
ExApi.Repo.insert(cs, on_conflict: :replace_all, conflict_target: :email)

Любой обходной путь, который сбросит deleted_at, будет очень полезен.

Проблема: если deleted_at уже установлен, я хочу сбросить егоВернуться к нулю при вставке

...