• 多谢!😀

  • 显示器上的灯哪里买的?看起来很不错的样子。

  • <tbody>在外面包一层

  • 第一点:我还没想过 Class.new(User) 可以这么用,很cool,ActiveType没看过,看起来可以一试。 第二点,我考虑过使用context,但是不想把 errors object搞混淆了,同一个页面需要同时显示warnings和errors 的时候,我不能执行一下 valid?(context),然后再执行一下 valid。

    总体问题就是ActiveRecord不能简单的给单个实例 动态添加验证。必须依赖callbacks体系, 在Class上提前定义好验证。

    其实还有些验证问题和关联表验证有关,我都是用FormObject重写验证,这体验挺糟糕的。

    1. 动态设置验证 根据数据自定义 validation,把validation设计成数据库存储。 例如:

      company1.configure_validation_on :User, :email, :present
      company2.configure_validation_on :User, :state, :present
      

      那么当一个 User create的时候,如果user关联的是company1,那么久要验证email。如果user关联的是company2那么验证 state. 这些validation需要写在数据库里,而不是代码里。那么定义一个 validate: custom_validation 是最简单的,但是无法简单重用 rails的 ActiveModel::Errors, 用meta programming也不合适,因为validation被设计成一种callback。

    2. 除了Errors之外多一层Warnings 老板希望能让用户创建数据时不强制验证,但是创建完后给出warning,以及在页面上能显示warning。 那么如果能类似 record.errors 多一层record.warnings会很不错.

  • 看 application.js 里面有哪些代码,rails默认有turbolink, 可能触发了一次。

  • 估计有javascript代码触发了两次请求。 你的代码没法看,找人带一下吧。

  • Rails 最佳实践 - 定时任务 at 2017年01月19日

    我们的方案,用cronjob 去添加任务到 sidekiq里,利用sidekiq的queue 保证服务器内存在跑任务的时候不受太大的影响。

    job_type :sidekiq,  'cd :path && RAILS_ENV=:environment bundle exec sidekiq-client push :task :output'
    
      # backup and clean log
      every 1.day, at: Time.zone.parse("2:31 am") do
        command "#{app_path}/bin/ruby_logrotate.sh"
      end
    
      # ------- begin of activity report ---------
      every 1.day, at: Time.zone.parse("2:40 am") do
        sidekiq "EventReport.daily_job"
      end
    
      every 1.day, at: Time.zone.parse("2:43 am") do
        sidekiq "SmartActivityReport.daily_job"
      end
    
  • 你这个or考虑的有点简单。除了你自己没人敢用。

  • Sidekiq worker 中调用 Java at 2016年12月06日

    使用rjb,

    1. 可以直接在项目里用rjb,用ruby调用java的代码。写在项目代码里,但是sidekiq可能不能用多线程模式,容易报错
    2. 用ruby 写一个脚本文件 require rjb和java代码,把Java的SDK简单封装一下,项目里sidekiq调用系统命令去执行这个ruby脚本,获得结果。不影响项目的稳定性,sidekiq多线程模式可以用,但单个API调用返回时间稍长。