我的数据库中有一个字段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 :(得分: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。