You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The changeset correctly casts strings to booleans:
aliasEcto.Changesetchangeset=%Person{}|>Person.changeset()IO.inspect(Changeset.fetch_field!(changeset,:member),label: "Default")changeset=%Person{}|>Person.changeset(%{"member"=>"false"})IO.inspect(Changeset.fetch_field!(changeset,:member),label: "From default to false")changeset=%Person{}|>Person.changeset(%{"member"=>"true"})IO.inspect(Changeset.fetch_field!(changeset,:member),label: "From default to true")changeset=%Person{member: true}|>Person.changeset(%{"member"=>"false"})IO.inspect(Changeset.fetch_field!(changeset,:member),label: "From true to false")changeset=%Person{member: false}|>Person.changeset(%{"member"=>"true"})IO.inspect(Changeset.fetch_field!(changeset,:member),label: "From false to true")nil
But to_form/1 gets confused when you set a field to the string version of its default:
importPhoenix.Component,only: [to_form: 1]form=%Person{}|>Person.changeset()|>to_form()IO.inspect(form[:member].value,label: "Default")form=%Person{}|>Person.changeset(%{"member"=>"false"})|>to_form()IO.inspect(form[:member].value,label: "From default to false")form=%Person{}|>Person.changeset(%{"member"=>"true"})|>to_form()IO.inspect(form[:member].value,label: "From default to true")form=%Person{member: true}|>Person.changeset(%{"member"=>"false"})|>to_form()IO.inspect(form[:member].value,label: "From true to false")form=%Person{member: false}|>Person.changeset(%{"member"=>"true"})|>to_form()IO.inspect(form[:member].value,label: "From false to true")nil