在保存到Rails中的数据库之前,应该在哪里放置用于解析数据的逻辑?

掩饰

我正在获取有关世界所有国家/地区的开放数据,并且需要能够解析该JSON文件,以便提取每个国家/地区的相关内容并将其存储到我的数据库中。

我不清楚应该在哪里编写逻辑来解析这些数据,并在模型或控制器中将每个国家/地区的每个相关部分保存在数据库中?我几乎把它放在控制器的根索引中,以便在用户访问后立即开始解析,但是我感觉这与胖模型(瘦控制器)的常规不符。

任何和所有帮助将不胜感激。谢谢!

最大限度

完全正确的做法是,将所有逻辑放在控制器中将违反瘦控制器。

一种实现方法是通过模型上的方法来解析api中的数据:

class Cat < ActiveRecord::Base
    def self.create_from_kittypix_api(data, &block)
      model = self.new(attrs_from_some_api(data))
      yield(model, data) if block_given?
      model
    end

    def self.attrs_from_kittypix_api(data)
      {
         foo: data[:bar]
      }
    end 
end

这样做的缺点是您的模型最终对外部API了解得太多,并且一次创建多个模型可能会导致责任混淆。

一种较新的方法是使用服务,它们是普通的旧红宝石对象,它们接受输入并完成给定的任务。

class KittypixImportService
  def self.call(kitty_pix_id)
    client = KittyPixClient.new
    result = client.get_kitty(id: kitty_pix_id)
    Cat.new(
      foo: result['bar']
    )
  end
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在保存到Rails中的数据库之前,应该在哪里放置用于解析数据的逻辑?

来自分类Dev

我应该在哪里放置需要访问数据库的验证代码?

来自分类Dev

我应该在哪里将数据库保存在Android文件系统上

来自分类Dev

我应该在哪里放置具有数据库属性的文件,以及应该在其上写入哪些属性?

来自分类Dev

我应该在哪里保存在WebMatrix中创建的数据库,以便它们与不在同一程序中开发的网站一起使用?

来自分类Dev

我应该在哪里保存数据?

来自分类Dev

在Flask-SQLAlchemy中,我应该在哪里初始化和存储数据库对象?

来自分类Dev

我应该在哪里管理数据库的一致性?

来自分类Dev

Phonegap数据库加密:我应该在哪里存储密码?

来自分类Dev

我应该在哪里声明新的Firebase数据库实例?

来自分类Dev

我应该在哪里访问我的数据库

来自分类Dev

在AngularJS中使用数据库-我应该在哪里编写数据库连接代码?

来自分类Dev

我应该在哪里正确放置sqlite数据库,这样它就不会在appstore的应用程序更新中被删除?

来自分类Dev

我应该在哪里将应用程序逻辑放置在登录功能中?

来自分类Dev

Rails4我应该在哪里放置现有库的扩展?

来自分类Dev

Javascript:我应该在哪里放置标准数据数组?

来自分类Dev

我应该在哪个数据条事件中更新数据库以授予订阅者访问权限

来自分类Dev

重复/重复-我应该在哪里保存配置文件数据?

来自分类Dev

我应该在哪里保存序列化数据文件?

来自分类Dev

我应该在哪里保存游戏级别数据?

来自分类Dev

您应该在哪里验证/消毒数据?

来自分类Dev

我应该在哪里存储数据模型?

来自分类Dev

我应该在哪里调用使用数据的方法?

来自分类Dev

我应该在哪里存储配置数据?

来自分类Dev

应该在哪里维护数据完整性?

来自分类Dev

数据应该在哪里加载到 ViewModel

来自分类Dev

我应该在哪里定义列默认逻辑,以使用C#rest API默认设置SQL Server数据库上的联系人顺序。

来自分类Dev

我应该在哪里放置逻辑以加载视图控制器?

来自分类Dev

我应该在哪里放置 ReactJS 组件的 onClick 逻辑?

Related 相关文章

  1. 1

    在保存到Rails中的数据库之前,应该在哪里放置用于解析数据的逻辑?

  2. 2

    我应该在哪里放置需要访问数据库的验证代码?

  3. 3

    我应该在哪里将数据库保存在Android文件系统上

  4. 4

    我应该在哪里放置具有数据库属性的文件,以及应该在其上写入哪些属性?

  5. 5

    我应该在哪里保存在WebMatrix中创建的数据库,以便它们与不在同一程序中开发的网站一起使用?

  6. 6

    我应该在哪里保存数据?

  7. 7

    在Flask-SQLAlchemy中,我应该在哪里初始化和存储数据库对象?

  8. 8

    我应该在哪里管理数据库的一致性?

  9. 9

    Phonegap数据库加密:我应该在哪里存储密码?

  10. 10

    我应该在哪里声明新的Firebase数据库实例?

  11. 11

    我应该在哪里访问我的数据库

  12. 12

    在AngularJS中使用数据库-我应该在哪里编写数据库连接代码?

  13. 13

    我应该在哪里正确放置sqlite数据库,这样它就不会在appstore的应用程序更新中被删除?

  14. 14

    我应该在哪里将应用程序逻辑放置在登录功能中?

  15. 15

    Rails4我应该在哪里放置现有库的扩展?

  16. 16

    Javascript:我应该在哪里放置标准数据数组?

  17. 17

    我应该在哪个数据条事件中更新数据库以授予订阅者访问权限

  18. 18

    重复/重复-我应该在哪里保存配置文件数据?

  19. 19

    我应该在哪里保存序列化数据文件?

  20. 20

    我应该在哪里保存游戏级别数据?

  21. 21

    您应该在哪里验证/消毒数据?

  22. 22

    我应该在哪里存储数据模型?

  23. 23

    我应该在哪里调用使用数据的方法?

  24. 24

    我应该在哪里存储配置数据?

  25. 25

    应该在哪里维护数据完整性?

  26. 26

    数据应该在哪里加载到 ViewModel

  27. 27

    我应该在哪里定义列默认逻辑,以使用C#rest API默认设置SQL Server数据库上的联系人顺序。

  28. 28

    我应该在哪里放置逻辑以加载视图控制器?

  29. 29

    我应该在哪里放置 ReactJS 组件的 onClick 逻辑?

热门标签

归档