• previous_changes方法


    [27] pry(main)> c = Channel.find 6
    => #<Channel id: 6, title: "会员", cid: "96", pid: "", channel_position: "", data_type: "", filter_id: "", version: "1.2.0">
    [28] pry(main)> c.valid?
    => true
    [29] pry(main)>
    [30] pry(main)>
    [31] pry(main)> c.has_filter
    => "1"
    [32] pry(main)> c.cid
    => "96"
    [33] pry(main)> c.is_default_channel
    => "1"
    [34] pry(main)> c.reload
    => #<Channel id: 6, title: "会员", cid: "96", pid: "", channel_position: "", data_type: "", filter_id: "", version: "1.2.0">
    [35] pry(main)> c.previous_changes
    => {}
    [36] pry(main)> c.title = c.title + 1
    TypeError: no implicit conversion of Fixnum into String
    from (pry):43:in `+'
    [37] pry(main)> c.title = c.title + '1'
    => "会员1"
    [38] pry(main)> c.save
    => true
    [39] pry(main)> c.previous_changes
    => {"title"=>["会员", "会员1"], "updated_at"=>[Fri, 08 Apr 2016 08:10:30 CST +08:00, 2016-04-08 12:28:20 +0800]}
    [40] pry(main)> a, b = [1,2]
    => [1, 2]
    [41] pry(main)> a
    => 1
    [42] pry(main)> b
    => 2

     model里的private方法

    def update_auto_activate_job
          if active?  # 对已经设置了自动开启时间的视频进行手动开启操作
            if (change = previous_changes[:state]) && change[0] == 0
              if job = Sidekiq::ScheduledSet.new.find_job(auto_activate_job_id)
                job.delete
              end
    
              update_attributes auto_activated_at: nil, auto_activate_job_id: nil 
            end
          else  # 针对未开启的视频,设置,取消或者更新定时开启时间
            if change = previous_changes[:auto_activated_at]
              original_value, new_value = change
    
              if original_value.nil?  # 设置定时开启,id是当前model里的id
                job_id = AutoActivateWorker.perform_at new_value, id
                update_attribute :auto_activate_job_id, job_id
              elsif new_value.nil?  # 取消定时开启
                if job = Sidekiq::ScheduledSet.new.find_job(auto_activate_job_id)
                  job.delete
                end
    
                update_attribute :auto_activate_job_id, nil 
              else # 更新定时开启时间
                if job = Sidekiq::ScheduledSet.new.find_job(auto_activate_job_id)
                  job.reschedule new_value
                end
              end
            end
          end 
        end 
  • 相关阅读:
    java IO流之详细总结
    位运算了解与复习多线程
    java 常见面试题总结(一)
    复习集合框架
    【面试题】java中高以上必会技能
    python-项目流程分析及优化查询方法
    python-day97--django-ModelForm
    python-day97--git协同开发
    python-day96--git版本控制
    python-day91--同源策略与Jsonp
  • 原文地址:https://www.cnblogs.com/iwangzheng/p/5368010.html
Copyright © 2020-2023  润新知