Size: a a a

2020 December 19

AN

Alexey Novoselov in pro.elixir
defp check_username_or_email_and_password_on_blink(nil, nil, nil), do: :fuckyou
источник

AD

Anastasiya Dyachenko in pro.elixir
Вбейте ecto changeset в гугл
источник

SK

Suren Kirakosyan in pro.elixir
Anastasiya Dyachenko
Вбейте ecto changeset в гугл
Я сегодня весь день с этого водился.
источник

AD

Anastasiya Dyachenko in pro.elixir
И чем код оттуда не подошёл?
источник

AD

Anastasiya Dyachenko in pro.elixir
Может есть какая-то конкретная специфика, что не понятно из первоначальной постановки вопроса
источник

SK

Suren Kirakosyan in pro.elixir
Anastasiya Dyachenko
Может есть какая-то конкретная специфика, что не понятно из первоначальной постановки вопроса
Скорее всего нужно было потрать время, чтобы понять какой вариант подходит больше. Я впервые делаю такое.
источник

AL

Anton Lapshin in pro.elixir
def check(nil, _, _), do: "userename blank"
def check(_, nil, _), do: "password blank"
def check(_, _, _), do: "email blank"
def check(nil, nil, _). do: "username and password blank"
def check(_, _, email), do
 case Regex.match?(@regex, email) do
   false -> "email is invalid"
   true -> :ok
 end
end
# .....
источник

AL

Anton Lapshin in pro.elixir
и так далее
источник

AL

Anton Lapshin in pro.elixir
об этом речь
источник

AD

Anastasiya Dyachenko in pro.elixir
Anton Lapshin
def check(nil, _, _), do: "userename blank"
def check(_, nil, _), do: "password blank"
def check(_, _, _), do: "email blank"
def check(nil, nil, _). do: "username and password blank"
def check(_, _, email), do
 case Regex.match?(@regex, email) do
   false -> "email is invalid"
   true -> :ok
 end
end
# .....
Зачем вообще это все вместе матчить, а не по отдельности, я чёт не могу понять
источник

AL

Anton Lapshin in pro.elixir
да и отдельно можно, конечно.
отдельно проверить мыло, отдельно username, отдельно наличие пароля чекнуть, а потом все результаты собрать, и если список не пустой - заджойнить на манер ошибок в активрекорд рельсов и плюнуть ошибку
источник

ع

عاصم بن حارث... in pro.elixir
Anastasiya Dyachenko
Зачем вообще это все вместе матчить, а не по отдельности, я чёт не могу понять
+++
источник

AL

Anton Lapshin in pro.elixir
можно объединить и через with прогонять, возвращая результаты промежуточные если что-то не отработало
источник

AL

Anton Lapshin in pro.elixir
посмотри в сторону with
источник

SK

Suren Kirakosyan in pro.elixir
Anton Lapshin
да и отдельно можно, конечно.
отдельно проверить мыло, отдельно username, отдельно наличие пароля чекнуть, а потом все результаты собрать, и если список не пустой - заджойнить на манер ошибок в активрекорд рельсов и плюнуть ошибку
Спасибо большое, тот код понятный, логику представил, но вот как всё отдельно делать - это не представляю.
источник

SK

Suren Kirakosyan in pro.elixir
Anton Lapshin
можно объединить и через with прогонять, возвращая результаты промежуточные если что-то не отработало
Вряд ли в with всё это пойдёт, скорее выйдет так же, как и с cond
источник

AL

Anton Lapshin in pro.elixir
def check_password(nil), do: "password blank"
def check_password(pwd), do: # тут проверочки всякие по паролю
# .....
def check_email(nil), do: "email blank"
def check_email(email), do: # проверочки
# .....

def check(email, uname, pwd) do
 result = check_password(pwd) ++ check_email(email) ++ check_username(uname)
 case result do
   [] -> :ok
   errors -> Enum.join(errors, "\n")
 end
end
как вариант
источник

AL

Anton Lapshin in pro.elixir
в итоге будет список типа:
"
ошибка с паролем такая-то
ошибка с мылом такая-то
ошибка с юзернеймом такая-то
"
источник

AL

Anton Lapshin in pro.elixir
наверняка можно ещё изящнее
источник

AD

Anastasiya Dyachenko in pro.elixir
Почему не ecto changeset то тогда? Вопрос же про него был
источник