gpt4 book ai didi

ruby-on-rails - 某些操作需要某些参数

转载 作者:数据小太阳 更新时间:2023-10-29 08:42:34 27 4
gpt4 key购买 nike

我需要在某些情况下验证某些参数的存在。这是一个例子:

在我的用户 Controller 中,对于更新操作,我需要验证这些参数是否存在。同样适用于汽车 Controller ,更新操作,您可以在此处看到重复出现的主题。参数是 additional_info

我的基本 Controller 提供 additional_info_params 从请求中提取正确的数据。

这是我到目前为止尝试过的。我创建了一个 AR Controller 关注点并将其包含在 Controller 中,这里是一些代码:

module ClassMethods
def require_additional_info_for(*methods)
binding.pry
return unless methods.include?(action_name)
if additional_info_params.empty?
head 400
end
end
end

我的想法是能够在 Controller 文件的顶部定义需要这些参数的方法,就像 Rails 中的 before_action 或 cancan 中的 skip_authorization_check 一样。像这样:

MyController < BaseController
include Concerns::AdditionalInformation
require_additional_info_for :update

def update
...
end
end

但是上面的代码并没有像我预期的那样工作,主要是因为它在没有太多关于请求的知识的情况下触发了请求类(我需要通过 action_name 从中派生操作名称)。

那么我该怎么做呢?

最佳答案

是的,你可以,但我建议你使用 before_action 回调!

在“抽象” Controller 中,像这样注册您的方法:

 class SameController < ApplicationController
...
protected
def require_additional_params
render status: :unprocessable_entity if additional_info_params.empty?
end
end

在此之后,所有将使用此方法的 Controller 都必须扩展 SameController,并运行 before_action 传递上述方法以执行所需的操作,例如:

class UserController < SameController
before_action :require_additional_params, only: [:action1, :action2]
end

注意:您可以将 require_additional_params 放入模块中并包含在您的 Controller 中,或者只将其放入 ApplicationController

关于ruby-on-rails - 某些操作需要某些参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54461367/

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