Почему в методе Ecto changeset
вы устанавливаете параметры для атома :empty
по умолчанию? например
def changeset(user, params \\ :empty) do
...
Позволяет ли это вам вызывать метод набора изменений с нулевым значением параметров?
Почему в методе Ecto changeset
вы устанавливаете параметры для атома :empty
по умолчанию? например
def changeset(user, params \\ :empty) do
...
Позволяет ли это вам вызывать метод набора изменений с нулевым значением параметров?
Это объясняется в программировании Phoenix:
Крис говорит: если параметры не указаны, мы не можем просто использовать пустую карту по умолчанию, потому что это будет неотличимо от отправки пустой формы. Вместо этого мы устанавливаем параметры по умолчанию для атома :empty. По соглашению, Ecto создаст недопустимый набор изменений с пустыми параметрами.
Таким образом, :empty
используется в качестве заполнителя, чтобы мы могли отличить отправку пустой формы от неуказанных параметров.
Как отмечает Стефан в комментарии ниже:
Обратите внимание, что в Ecto 2.0 используется пустая карта:
def changeset(user, params \\ %{}) do
def changeset(user, params \\ %{}) do
. См. hexdocs.pm/ecto/2.0.2/Ecto.Changeset.html а>
- person Stefan; 04.07.2016
:empty
теперь вызывает Ecto.CastError
. Однако %{}
работает отлично.
- person M. Davis; 24.01.2018