2017-06-15 93 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