gpt4 book ai didi

ruby-on-rails - 当我们只更新一个属性时,我们应该使用强参数吗?

转载 作者:数据小太阳 更新时间:2023-10-29 07:16:47 26 4
gpt4 key购买 nike

我正在开发一个 Rails 应用程序,我有几个操作(#delete_later、#ban_later 等等),我只从请求参数中设置一个属性(具体来说,一个 reason 字段用于做那个 Action )。

我想知道这样做是否可以:

def ban_later
@object.reason = params[:object][:reason]
@object.save
end

或者即使在这种情况下使用强参数也是最佳实践吗?

def ban_later
@object.reason = object_params[:reason]
@object.save
end

private
def object_params
params.require(:object).permit(:permitted_1, :permitted_2, :reason)
end

以下哪种解决方案最好?如果它们都不是,那么解决我的问题的最佳方法是什么?

稍后编辑:

#ban_later、#delete_later 操作确实可以设置标志列status,但这可以在不从 params 哈希接收它的值的情况下完成。由于每个方法只能设置一个状态,因此您可以在#delete_later 时简单地设置状态“pending_delete”,在#ban_later 时设置“pending_ban”。

稍后稍后编辑

为什么直接使用#save而不是update_attributes?假设您需要一个 if @object.save 语句。在 false 分支(对象未保存)上,您可能仍想呈现一个 View ,其中使用了该 @object 的内容。

最佳答案

第一个节省计算量。

第二个检查是否存在 :object 子哈希,我认为这有利于容错。

我最初会选择第一个,但经过一番思考我更喜欢第二个。

关于ruby-on-rails - 当我们只更新一个属性时,我们应该使用强参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33095241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com