2016-01-02 10 views
11

Perché in un metodo Ecto changeset si impostano i parametri sull'atomo predefinito :empty? per esempio.Atomo vuoto in centralina Ecto

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

Ciò consente di chiamare il metodo changeset con zero per i parametri?

risposta

15

questo è spiegato nella programmazione Phoenix:

Chris dice: Se non ci sono parametri specificati, non possiamo semplicemente stabilizziamo ad una mappa vuota perché sarebbe indistinguibile da un invio di un modulo in bianco. Invece, abbiamo params predefiniti per l'atomo: vuoto. Per convenzione, Ecto produrrà un changeset non valido, con parametri vuoti.

Quindi :empty viene utilizzato come segnaposto in modo da poter distinguere tra l'invio di un modulo vuoto e nessun parametro specificato.


Come Stefan note nel commento qui sotto:

Si noti che con Ecto 2.0 utilizza una mappa vuota: def changeset(user, params \\ %{}) do

+6

Si noti che con Ecto 2.0 utilizza una mappa vuota: ' def changeset (user, params \\% {}) do'. Vedi https://hexdocs.pm/ecto/2.0.2/Ecto.Changeset.html – Stefan

+0

Fatto questo prominente nella risposta nel caso in cui la gente lo manca. Grazie :) –

+1

Qualche idea sul perché Ecto 2.0 possa ora impostare automaticamente una mappa vuota? – Johannes