• 先想好如果纯用 SQL 的话怎么写

  • 我上面写了一个观点:时区应该只是展示层的事情

    1. 如果面向全球的情况下,如果不统一为 UTC 后续基本玩不转,在新的服务器上面跑都得注意这一些事情
    2. APP 和数据库不统一的话,写代码都得时刻注意到底该用啥时区,这不是很累么
    3. 时区应该只是展示层的事情

    像你这么配置,你很多时候弄不清楚目前究竟是啥时区,究竟应该用什么时区,换个人来维护更容易出错。 还有,你的这个配置在不同区域的服务器上面,由于你采用了 :locale 会使得你的代码行为不一致,这简直就是挖个坑自己跳进去。 万一错了,你还得搞清楚哪些数据错了,然后迁移数据。

    如果统一成了 UTC,你根本就不需要考虑上面那么多问题,只需要考虑用户的输入的时候是什么时区,然后使用

    param_time = Time.zone.parse(params[:time])
    

    然后就没了,ActiveRecord 会自动帮你把时间转换成为配置的时区,ActiveRecord 的时区配置,与数据库一直这点很重要。

    再加上 Rails app 的时区与这两个一致,我认为刚好就对上了 约定优于配置 的理念。

    综上,建议

    1. Rails 的时区不需要配置了,默认就全是 UTC
    2. 数据库的时区也配置为 UTC
    # config.time_zone = 'UTC'
    # config.active_record.default_timezone = :utc
    
  • [上海] 2017.5.21 Elixir Meetup at 2017年5月11日

    啥时候深圳能办一场 👏

  • 强烈建议,应用层,数据库全部走 UTC

    曾经踩过坑,跌得挺惨

  • 真的如果到了阅读这种程度源码的地步,我比较倾向于下下来看

  • 关于 RSpec 测试 at 2017年4月18日

    还没写就考虑哪些不写了?为啥不都试试?

  • 北京面试所感 at 2017年4月17日

    原来你还有这么励志的故事!

  • simple_form 死活不横排 at 2017年4月13日

    wrapper 定义了吗?

    SimpleForm.setup do |config|
      config.wrappers :horizontal_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
        b.use :html5
        b.use :placeholder
        b.optional :maxlength
        b.optional :pattern
        b.optional :min_max
        b.optional :readonly
        b.use :label, class: 'col-sm-3 control-label'
    
        b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
          ba.use :input, class: 'form-control'
          ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
          ba.use :hint,  wrap_with: { tag: 'p', class: 'help-block' }
        end
      end
    end
    

    楼主还是从 form_for 用起吧,步子不要迈得太大!

  • .sprockets-manifest-xxx 后面的 xxx 是随便生成的,不是这个文件内容的 MD5,资源文件的 fingerprint 才是 MD5 的

too young too simple