Пустой атом в наборе изменений Ecto

Почему в методе changeset вы устанавливаете параметры по умолчанию :empty атом? например

def changeset(user, params \\ :empty) do
   ...

Означает ли это, что вы можете вызвать метод changeet с помощью nil для параметров?

Ответы

Ответ 1

Это объясняется в Программе Phoenix:

Крис говорит: если не указано никаких параметров, мы не можем по умолчанию использовать пустую карту, потому что это будет неотличимо от отправки пустой формы. Вместо этого, мы по умолчанию params для атома: empty. По соглашению Ecto создаст недопустимый набор изменений с пустыми параметрами.

Итак :empty используется в качестве заполнителя, чтобы мы могли различать пустую форму представления и не заданные параметры.


Как отмечает Штефан в комментарии ниже:

Обратите внимание, что с Ecto 2.0 он использует пустую карту: def changeset(user, params\\%{}) do