2017-06-15 5 views
1

データベースに、前のレコードよりも1つ多くのフィールドを割り当てるフィールドtoken_numberがあります。アレイメモリ内の変数の値を変更します。

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

、私は、とにかく試してくださいしかし、この問題に関連する他のstuffsをしている間、私は将来的に自信を持つことができるようにだけでなく、これを学ぶことになるでしょうあなたが必要 – Mannish

1

私はあなたが

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

のような0何かにtoken_numberリセットし、コードスニペットで述べたように値を更新するbefore_createコールバックを使用するwhenever宝石を使用してrake taskを右に示唆しています。私は宝石でそれを行うことができれば素晴らしいだろう

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いつでも宝石のドキュメントを読むと、https://github.com/javan/whenever。タスクのスケジュール方法を知ることができます。 – Pramod

関連する問題