我正在创建一个 API,我希望外部只能访问更新方法来实现报告。但如果没有报告,我想创建它。我知道最简单的方法就是在更新方法中创建它,但是一旦我已经有了一个创建方法构建,我想知道是否可以调用它来发送一些参数。
我在这里环顾四周Rails 3: Call functions inside controllers or API 但我没有找到任何好的解决方案。
有人有更好的吗?
非常感谢您提前。
我正在创建一个 API,我希望外部只能访问更新方法来实现报告。但如果没有报告,我想创建它。我知道最简单的方法就是在更新方法中创建它,但是一旦我已经有了一个创建方法构建,我想知道是否可以调用它来发送一些参数。
我在这里环顾四周Rails 3: Call functions inside controllers or API 但我没有找到任何好的解决方案。
有人有更好的吗?
非常感谢您提前。
你不应该从另一个动作中调用你的控制器的动作。
为什么?因为控制器的每一个动作都被定义为响应一个请求,该请求具有几个属性(如 IP、参数、会话、HTTP 标头等)。想象一下,在 Controller 中调用另一个动作是多么“奇怪”。
如果您想做与更新操作无关的“额外逻辑”(例如,创建),您应该调用此控制器的受保护(只能通过控制器及其子级访问)方法。
在您的情况下,您可以执行以下操作:
class ReportsController < ApplicationController
def update
@report = Report.where(id: params[:report_id]).first
if @report.nil?
create_report(params)
else
# etc.
end
end
protected
def create_report(params)
Report.create(params)
end
end