Ruby on rails MVC模式和RoR或者代码必须放在哪里?

Ruby on rails MVC模式和RoR或者代码必须放在哪里?,ruby-on-rails,ruby,model-view-controller,Ruby On Rails,Ruby,Model View Controller,我的任务是从用户那里获取一些数据。下一部分是向第三方站点的API发出永久请求,并处理来自该API的响应。我不知道这个部件应该放在哪里:模型、控制器还是模块?应用程序的最后一部分将向用户的电子邮件发送状态。我通常将其包装在模块或类中,然后将文件放入文件夹中 app/models/services/ 这是我放置的文件夹,所有东西都属于服务类,例如,请求API并从中继续响应的逻辑。处理HTTP请求的用户输入通常在控制器中完成 向rails服务器发送请求,包括用户输入 请求将被路由到相应的控制器操作。在

我的任务是从用户那里获取一些数据。下一部分是向第三方站点的API发出永久请求,并处理来自该API的响应。我不知道这个部件应该放在哪里:模型、控制器还是模块?应用程序的最后一部分将向用户的电子邮件发送状态。

我通常将其包装在模块或类中,然后将文件放入文件夹中

app/models/services/


这是我放置的文件夹,所有东西都属于
服务类
,例如,请求API并从中继续响应的逻辑。

处理HTTP请求的用户输入通常在控制器中完成

向rails服务器发送请求,包括用户输入

请求将被路由到相应的控制器操作。在控制器操作中,向外部API发出HTTP请求,并使用RestClient之类的方法将用户输入包含在请求中

最后,您将向用户发送一封电子邮件,并通过调用deliver!方法在邮件器类上执行

例如:

class UsersController < ApplicationController

    def controller_action
        @user_input = params[:query]

        # Build the external API request URI.
        # Using www.icd10api.com as an example.
        url = Addressable::URI.new(
              scheme: "http",
              host: "www.icd10api.com",
              query_values: {code: @user_input, r: "json", desc: "long"})
        # Perform the external request and parse the response
        resp = JSON.parse(RestClient.get(url.to_s))

        # Finally, deliver the email.
        UserMailer.statuses_email(resp).deliver!

        # Return status code
        render status: 200
    end
end
class UsersController
您可以随时将代码重构为模块,但我只在3+个位置使用时才这样做

如果您将此应用程序不仅仅用作演示应用程序,我会参考Andrew CP Kelley评论中的链接:

参考资料:

如果您使用的是rails 4+,您可能还需要考虑一些问题:


在我看来,它将在controller中-考虑到你说它是一个小项目。具体取决于,但我认为第三方API请求应该封装在一个模块中,或者至少封装在一个模型中。在我看来,它应该被提取到与第三方服务交互的服务中,一旦服务收到第三方的响应,它将通知模型,然后模型将采取适当的措施。感谢您的回答和链接。