gpt4 book ai didi

ruby-on-rails - Rails 在创建和更新中使用不同的参数

转载 作者:行者123 更新时间:2023-12-04 02:08:47 27 4
gpt4 key购买 nike

我有一个 Event模型。它有 budget参数。业务逻辑要求 budget ,一旦在创建时设置,以后无法更改。
在客户端,这意味着我禁用了相应的字段。

但是当然,这些数据仍然可以手动发送到服务器。
在服务器上,之前的设置如下:

def event_params
params
.require(:event)
.permit(
:title,
:budget,
...
)

event_params用于创建和更新方法。
我正在考虑为创建和更新创建两组不同的允许参数,但我不喜欢这个想法,因为 DRY。

你对这个问题的建议是什么?如何在保持代码优雅的同时防止预算更新?

最佳答案

如果budget以后不能改,不能允许:budget在更新操作的参数上(例如: @event.update(event_params) )。这并不违反 DRY,这是您网站的安全问题。

例如,检查设计如何工作。他有一组参数用于 sign_up和一个不同的 account_update https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb#L137

但是,如果您想对创建和更新使用相同的参数,您可以将业务逻辑移至服务。这是一篇关于它们的好文章:https://blog.engineyard.com/2014/keeping-your-rails-controllers-dry-with-services

这个想法是创建一个 EventService用一种方法创建,另一种方法更新。每个方法都会处理从您的 Controller 接收到的允许参数(来自 event_params)

关于ruby-on-rails - Rails 在创建和更新中使用不同的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40849990/

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