2017-06-15 96 views
1

我在我的数据库中有一个字段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

请帮

回答

0

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

+0

这将是巨大的,如果我可以用宝石做,我会尝试无论如何,但想了解这个问题,以及因此,虽然做有关该问题的其他东西我可以在未来充满信心,感谢 – Mannish

1

我建议你使用rake taskwhenever宝石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 
+0

你需要改变方法类方法'self.update_token_number' –

+0

@promond谢谢,但可以请你详细告诉我,因为我不是很清楚耙子任务。很抱歉打扰,但如果你能详细说明,那么可能是很大的帮助。如果我错过了任何信息,那么请问.... – Mannish

+0

@Mannish如果你仔细阅读gem的文档,https://github.com/javan/whenever。你将会知道如何安排任务。 – Pramod