Почему в методе changeset вы устанавливаете параметры по умолчанию :empty атом? например
def changeset(user, params \\ :empty) do
...
Означает ли это, что вы можете вызвать метод changeet с помощью nil для параметров?
Ответ 1
Это объясняется в Программе Phoenix:
Крис говорит: если не указано никаких параметров, мы не можем по умолчанию использовать пустую карту, потому что это будет неотличимо от отправки пустой формы. Вместо этого, мы по умолчанию params для атома: empty. По соглашению Ecto создаст недопустимый набор изменений с пустыми параметрами.
Итак :empty используется в качестве заполнителя, чтобы мы могли различать пустую форму представления и не заданные параметры.