Wenn sich ein neuer Benutzer anmeldet, möchte ich ihm standardmäßig ein Gravatar-Profilbild geben, danach sollte er es manuell setzen können, daher sollte die Changeset-Methode nur dann angewendet werden profile_img_url ist gleich NullEcto.Changeset Wenn profile_img_url nicht gesetzt ist benutze gravatar
def changeset(model, params \\ :empty) do
model
|> cast(...)
...
|> get_gravatar
end
defp get_gravatar(current_changeset) do
case current_changeset do
%Ecto.Changeset{valid?: true, *is_nil:* :profile_img_url} ->
put_change(current_changeset, :profile_img_url, get_somehow_the_gravatar_img(current_changeset))
_ -> current_changeset
end
end
Also im Grunde die Frage ist, dann ist dies der richtige Weg, es zu tun, und gibt es einen Ecto Mehtod zu überprüfen, ob der Wert gleich Null ist oder nicht. (Nicht nur im Änderungssatz, sondern auch im db)
sagen Sie, dass, wenn ein neuer Benutzer registriert, wenn er nicht zur Verfügung gestellt hat anwenden ein Profilbild ein Gravatar? – coderVishal
Haben Sie darüber nachgedacht, eine Funktion in einer Ansicht zu erstellen? Die Funktion würde prüfen, ob ein Avatar vorhanden ist, und wenn dies der Fall ist, würde es das Avatarbild rendern, wenn nicht, würde es den Gravatar darstellen. – JustMichael
@coderVishal ja genau, wenn keine img zur Verfügung gestellt, erzeugen ein Gravatar – webdeb