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

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

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

Позволяет ли это вам вызывать метод набора изменений с нулевым значением параметров?


person Elliot Larson    schedule 02.01.2016    source источник


Ответы (1)


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

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

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


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

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

person Ryan Bigg    schedule 03.01.2016