0

次のモデルを使用した単純な Rails 3 請求アプリケーションがあります。

Brand
Client
Invoice

ブランドには多くの請求書があり、クライアントには多くの請求書があり、請求書はクライアントとブランドに属しています。基本的に、ブランドは請求書を作成する会社であり、クライアントは請求書の受信者であり、請求書は実際の請求書です。

私は、ブランドごとに固有のものを前に付けた各請求書の単純なランダムな参照番号を持つ最善の方法を考え出そうとしています.

ブランドテーブルにinvoice_prefixを追加しようと考えています。次に、ブランドにはそれぞれ のような 3 桁のプレフィックスが付きDAN-ます。

請求書テーブルの列に、ブランドの接頭辞とそれに続く 5 桁の乱数を追加する最良の方法は何ですか?

これを行うためのより良い方法の提案をお待ちしています!

私が望む最終結果は、各請求書が のような一意の参照を持つことDAN-98372です。

ブランド テーブルにプレフィックス列を追加し、ブランド プレフィックスの後に乱数を挿入する請求書の before_create アクションを作成するのが最善の方法だと思います。これを行う最善の方法がわかりません。

before_create :generate_reference

private
def generate_reference
  self.invoice_number = self.brand.prefix
end

上記のコードはブランドの接頭辞を正しく取得しますが、後でランダムな 5 桁の数字を追加する方法がわかりません。

のようなものがうまくいくと思います<%= rand(1000..9999) %>が、それを before_create のブランドプレフィックスに追加する方法がわかりません。

私は after_create メソッドにあまり詳しくないので、アドバイスをいただければ幸いです。

4

3 に答える 3

1

提供された情報から、多型関連のケースです。http://guides.rubyonrails.org/association_basics.htmlを参照してください。

提供されたコードでは、割り当てられた値を保存する必要があるため、'after_create' ではなく 'generate_reference' 'before_create' を呼び出す必要があります。after_create を指定すると無限ループになります。

于 2013-04-04T11:56:41.617 に答える
1

あなたが使用することができます

https://github.com/patdeegan/integer-obfuscator

またはhttps://github.com/namick/obfuscate_id

そうすれば、実際に持っている請求書の数を隠すことができ、それは一意になります

于 2013-04-04T11:59:33.163 に答える
0

ランダムなデータ リソースを生成する

https://github.com/wemersonblend/fakejs

于 2013-11-07T13:01:51.810 に答える