• 用过 vscode 或 android studio,撸 flutter 之后,总觉的用各种 IDE 撸 Ruby 非常不爽。那种强类型语言的自动提示和自动格式化,各种自动代码生成,以及各种简单方便的调试工具,实在是太爽快了。总觉的撸 ruby 的过程就像是隔靴搔痒,不得劲儿啊。

  • 嵌入的数据,倒不是经常需要修改。只是在统计、或者一些状态判断的时候很麻烦。 另外,我还遇到了一个窝心的事情,原来用早期的 carrierwave 版本学的爬虫程序,没 mount 的字段,比如是 picture 吧,那么数据库里面存的字段就是 picture_filename。现在用新版本的 rails 和 carrierwave 写了一个 graphql 服务器,默认的字段名变成了 picture,每次都需要把字段名换一下。 对于普通的 collection,直接做 JavaScript:

    db.collection.update({},{$rename:{"picture_filename":"picture"}});
    

    或者用 mongoid 在 Rails 环境下

    Picture.all.rename(picture_filename: 'picture')
    

    就可以了,在嵌入式文档里面,实在是没搞明白怎么折腾。

  • mongodb,一直在用。中间也偶尔会用到 pg。mysql 在被 oracle 收购之后,就用得很少了。 用了一段时间的 mongodb 之后,再要回去用 pg,是非常辛苦的。各种表的结构都是固定的,不像是 mongodb,随时随地的调整,加减内容,每个文档都不需要保持相同。 在数据量没有那么大的情况下,各种数据库的效率其实是差不多的。 在复杂的统计分析方面,mongodb 肯定是没有 SQL 方便,在数据量不大的时候做 aggregation 其实 SQL 有的功能基本也都能实现。数据量大的时候,通过 MapReduce 也还是可以实现的。 NoSQL 数据库,复杂的统计分析,肯定是比较麻烦实现的。这东西本来也不是为了那种上万实体,每个实体几十上百个字段的复杂系统设计的。 不过,用来搞网站还是基本够用的。

  • 我现在是直接用 string 类型了,回头用你的方法试试。

  • 询问一下,应该如何查询 DateTIme 格式的字段? 我在网上查了一下,有人说是要用 Types::DateTimeType,我得到了:uninitialized constant Types::DateTimeType 请问应该如何处理?

  • 试验了几次,感觉还是字段的问题,重新赋值了字段,将原来 picture_filename 里面的信息,复制到 picture 里面,但是需要重启之后,才能够 run。估计是内存里面还有一些残留。 诡异。

  • 两边都是 mount_uploader,我查了一下,里面存的也是一个文件名,没有任何变化。 但是,我重新存进去的可以用,原来数据导过来的就不工作,不知道还有些什么奇怪的信息,放在外面。

  • 版本差异太大了,4 年了,ruby 和 rails 的版本都升级了,原来的版本不一定能跑了。

  • 感觉是版本的问题,原来的版本 carrierwave 将信息存在 picture_filename 里面,现在好像默认是存在 picture 字段里面。 我做了复制,但是好像还是不对,依然读不出 url 来,是不是存进去的格式也发生了变化? 感觉原来存储的仅仅是一个文件名,而现在好像存储的是一个非常复杂的 json,直接吧原来的字符串赋值过去,搞不定啊。

  • 原来如此,还是比较有趣的。这种小点拨,还是非常有帮助的。