【发布时间】:2016-06-26 18:21:45
【问题描述】:
当一个新用户注册时,我想默认给他一个 gravatar 头像,之后他应该可以手动设置,所以 changeset 方法应该只适用于 profile_img_url 为 nil
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
所以基本上,问题是,这是正确的方法吗,是否有一个 Ecto 方法来检查值是否为 nil。 (不仅在变更集中,也在数据库中)
【问题讨论】:
-
你是说当新用户注册时,如果他没有提供头像应用gravatar?
-
您是否考虑过在视图中为此创建一个函数?该函数将检查头像是否存在,如果存在,则渲染头像图像,如果不存在,则渲染头像。
-
@coderVishal 是的,当没有提供 img 时,生成一个 gravatar
-
@JustMichael,如果我可以将图像应用到模型一次,我就不需要再检查了.. 有意义吗?
标签: elixir phoenix-framework ecto