更改内存中变量的值

时间:2017-06-15 05:44:01

标签: ruby-on-rails ruby ruby-on-rails-5

我的数据库中有一个字段token_number,我希望分配比前一个记录多1个字段。

例如就数组

而言
 token_number[2] = token_number[1] + 1

第一条记录的值为1。如何在模型中分配一个变量,每次我从控制器创建一个新记录时都会更改。

我的下一个条件是,每当当前时间,即Time.now为午夜时,变量将重置为0。我试过这样的

class Ticket < ApplicationRecord
    before_create :update_token_number

private
    def update_token_number
        date = Time.now
         time_zone = Time.zone # any time zone really
         timeday = time_zone.local(date.year, date.month, date.day)
         midday = timeday.beginning_of_day
        if date == midday
            num = 0
            num = num + 1
        else
            num = num + 1
        end
            self.token_num = num
        #end
    end
end

如果它也运行,则给予该字段的值始终为1.

请帮忙

2 个答案:

答案 0 :(得分:1)

我建议您使用whenever gem将rake task重置为将token_number重置为0.类似

every 1.day, :at => '12:00 am' do
  runner "Ticket.reset_token_number"
end

并使用before_create回调来更新代码段中提到的值。

class Ticket < ApplicationRecord
  before_create :update_token_number

private
  def update_token_number
    self.token_num +=1
  end
end

答案 1 :(得分:0)

如果我是你,我不会手动创建这样的令牌。 我想你应该试试Json Web Token Gem