更新 Ecto 变更集中不允许的值
Updating unpermitted values in an Ecto changeset
我想在我的架构变更集中更新一些不是 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
未列入白名单,因此会被忽略。我有哪些选项可以强制更新?如果有多个选项,是否有约定?
我只想创建另一个有权设置值的变更集函数。
def admin_changeset(%Comment{} = comment, attrs) do
comment
|> cast(attrs, [:text, :under_moderation])
|> validate_required([:text])
end
然后只需使用它来更新值。如您所见,我将其命名为 admin_changeset
,因为看起来这是一个由管理员设置的值。在您的控制器或上下文模块中,只需检查用户角色(如果您有类似的角色),然后决定您要使用哪个变更集功能。
我想在我的架构变更集中更新一些不是 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
未列入白名单,因此会被忽略。我有哪些选项可以强制更新?如果有多个选项,是否有约定?
我只想创建另一个有权设置值的变更集函数。
def admin_changeset(%Comment{} = comment, attrs) do
comment
|> cast(attrs, [:text, :under_moderation])
|> validate_required([:text])
end
然后只需使用它来更新值。如您所见,我将其命名为 admin_changeset
,因为看起来这是一个由管理员设置的值。在您的控制器或上下文模块中,只需检查用户角色(如果您有类似的角色),然后决定您要使用哪个变更集功能。