代码之家  ›  专栏  ›  技术社区  ›  nullnullnull

更新EXTO变更集中不允许的值

  •  0
  • nullnullnull  · 技术社区  · 7 年前

    我想更新一些不是 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 未列入白名单,将被忽略。我必须强制更新哪些选项?如果有多种选择,是否有约定?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Phillipp    7 年前

    我只想创建另一个变更集函数,它有权设置值。

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

    然后简单地使用它来更新值。正如你所见,我给它起了个名字 admin_changeset 因为这似乎是一个由管理员设置的值。在控制器或上下文模块中,只需检查用户角色(如果您有类似的角色),然后决定要使用哪个变更集函数。