Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我应该在Rails应用程序的活动记录中存储JSON吗_Ruby On Rails_Json_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 我应该在Rails应用程序的活动记录中存储JSON吗

Ruby on rails 我应该在Rails应用程序的活动记录中存储JSON吗,ruby-on-rails,json,ruby-on-rails-3,Ruby On Rails,Json,Ruby On Rails 3,我正在用RubyonRails开发一个赛马应用程序。简而言之,我接收赛马图表的文本文件,并将它们导入到我的应用程序中。该应用程序旨在为用户提供一种简单的方式来查看比赛图表,并提供各种统计信息和过滤。我已经为许多数据领域开发了一个非常好的下降数据模型,它应该解决应用程序的静态和过滤方面的问题。然而,当涉及到允许用户轻松查看图表时,我对我的解决方案并不满意。目前,我必须获取所有不同的数据字段并创建一个图表对象。这对我来说似乎效率很低。或者,我可以在导入时创建一个JSON图表对象,然后将序列化对象存储

我正在用RubyonRails开发一个赛马应用程序。简而言之,我接收赛马图表的文本文件,并将它们导入到我的应用程序中。该应用程序旨在为用户提供一种简单的方式来查看比赛图表,并提供各种统计信息和过滤。我已经为许多数据领域开发了一个非常好的下降数据模型,它应该解决应用程序的静态和过滤方面的问题。然而,当涉及到允许用户轻松查看图表时,我对我的解决方案并不满意。目前,我必须获取所有不同的数据字段并创建一个图表对象。这对我来说似乎效率很低。或者,我可以在导入时创建一个JSON图表对象,然后将序列化对象存储在活动记录中。通常,用户一次会请求多个图表对象,因此速度很重要。如您所见,它是一个相当复杂的数据结构

我只在rail开发部门工作了几年,这只是我的一个爱好,所以我希望能从一些更有经验的rails开发人员那里得到一些信息。这里有几个问题:

  • 是我所建议的解决问题的通用方法,还是有更好的处理方法

  • 假设这种方法有优点,那么创建JSON对象的最佳/正确方法是什么。我尝试创建对象的散列,然后使用to_json,但结果根本不像json

  • 有没有什么可以让这项任务更容易的宝石

  • 如果我打算继续学习这门课程,那么在数据存储上使用而不是其他存储(如Postgres、MySQL、MongoDB)是否有意义

  • 我感谢任何人愿意分享的建议、智慧或建议

    JSON是的一个子集,因此从以下内容开始:

    任意长度的数据库字符串可以是文本,也可以是BLOB,后者更容易通过谷歌搜索!如果将文本字段放入
    ActiveRecord::Base.serialize
    ,Rails将自动将哈希编码为YAML进入数据库,并将其解码回哈希

    PostgreSQL是一个技术上优越的数据库。如果您刚刚起步,请使用MySQL,因为PostgreSQL从Oracle DDBMS学到了它所知道的关于用户友好性的一切。您可以在MySQL中轻松地序列化为BLOB。但是序列化到PostgreSQL hstore的关键是查询

    数据库SELECT语句的WHERE子句不能始终读取所有BLOB或文本。某些系统仅读取前256个字符。字符将包含JSON/YAML标记和转义,因此您无法轻松查询复杂文本。但是PostgreSQL SELECT语句知道hstore字段包含JSON,并且它们支持一种特殊的表示法来通过键和值查询它们


    您可能不需要查询JSON中的任何内容。这就引出了我的最后一点:即使你只是在做一个学习者项目,也要写很多自动测试。所有这些决定都不是一成不变的,所以现在就写任何可行的东西,保持干净,保持测试通过,当需要升级时(例如从MySQL迁移到PostgreSQL),测试将对您有所帮助。

    我一直在使用Postgres和一个可以很好地存储任意属性的列。可能值得一看。PostgreSQL 9.3(我认为)支持原生JSON数据类型,这将使在db级别上使用它更容易(如果您以后希望查询JSON)。另一种方法是缓存图表,并提供预呈现的图表。当谷歌搜索从堆栈溢出答案链接时,这很有趣,一段时间后,问题本身成为该搜索的首要结果。谷歌跟踪RSS提要以帮助其动态重新排名。希望我们能开始
    robot.txt
    ——在任何十年内都能找到过时的0.9版答案。然而,这一机制确实让内容保持新鲜