2016-05-11 7 views
0

私のメソッドが参照番号を保存していない理由がわかりません - あなたの助けに感謝します。生成された参照番号:レールに生成された参照番号に文字列を追加できません - Rails 4

  • iは、自動的に参照番号参照番号iが生成された基準
  • などの先頭に文字列「JC」を追加したいと思い生成され
  • を生成する方法を持っています:a3a8a957c8とJCa3a8a957c8
  • 私のコードは、コンソールで正しく動作しますが、私はpayment.reference文字列が自動的に一緒に保存されていない呼び出すときに生成された参照番号
  • に追加された文字列を保存しない線量がしたいです生成された参照文字列 "JC" は 生成された参照番号

    に追加されていない理由NCE

は、一つは親切に私に助言することができ -

モデル:payment.rb

class Payment < ActiveRecord::Base 
    before_create :generate_reference_number_main 

    def generate_reference_number_main 
    begin 
     random_number = self.reference = SecureRandom.hex(5) 
    end while self.class.exists?(reference: reference) 
    ref_number = "JC" + random_number 
    end 
end 

ターミナル - コンソール

payment = Payment.last 
#payment details displayed 

payment.generate_reference_number_main 
#JC2dcbbfdaa2 

payment.save 
#true 

payment.reference 
#2dcbbfdaa2 

答えて

2

このようにすることができます。

def generate_reference_number_main 
self.reference = "JC"+ SecureRandom.hex(5) unless self.reference 
end 
+0

ありがとうございます! – ARTLoe

1

あなたが保存する前に、支払い記録の参照属性に更新された基準文字列を代入されていません。

payment.reference = payment.generate_reference_number_main 

また、あなたのコードが実行される方法に応じて、あなたがレコードを保存する前にSecureRandom.hex(5)の値に基準値を設定し、このライン

random_number = self.reference = SecureRandom.hex(5) 

に注意する必要があります毎回。

関連する問題