【问题标题】:Updating unpermitted values in an Ecto changeset更新 Ecto 变更集中不允许的值
【发布时间】:2018-03-06 02:59:21
【问题描述】:

我想在我的架构变更集中更新一些不是 permitted 属性的元数据:

def changeset(%Comment{} = comment, attrs) do
  comment
  |> cast(attrs, [:text])
  |> validate_required([:text])
end

然后是这样的:

changeset = Comment.changeset(commet, %{under_moderation: true})

Repo.update(changeset)

由于under_moderation 未列入白名单,因此会被忽略。我有哪些选项可以强制更新?如果有多个选项,是否有约定?

【问题讨论】:

    标签: phoenix-framework ecto


    【解决方案1】:

    我将创建另一个有权设置值的变更集函数。

    def admin_changeset(%Comment{} = comment, attrs) do
      comment
      |> cast(attrs, [:text, :under_moderation])
      |> validate_required([:text])
    end
    

    然后只需使用它来更新值。如您所见,我将其命名为admin_changeset,因为这似乎是由管理员设置的值。在您的控制器或上下文模块中,只需检查用户角色(如果您有类似的东西),然后决定您要使用哪个变更集功能。

    【讨论】:

    • 谢谢!这很有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    相关资源
    最近更新 更多