0

我試圖運行從文件數的數,用以下值如何從運行號碼創建行?

數據記寫代碼:

document_types records : 
     {:document_type_code => 'PR', :running_no => 2, ...} 
     {:document_type_code => 'SO', :running_no => 1, ...} 

    transactions records : 
     {:id => 1, :document_no=> 'PR000001', :document_type_code=> 'PR', ...} 
     {:id => 2, :document_no=> 'SO000001', :document_type_code=> 'SO', ...} 
     {:id => 3, :document_no=> 'PR000002', :document_type_code=> 'PR', ...} 

設計:

create_table :runnings do |t| 
    t.string :document_type_code, :null => false, :limit => 2 
    t.integer :running_no, :null => false, :default => 0 
    ... 
    t.timestamps 
end 

create_table :transactions do |t| 
    t.string :document_no, :null => false 
    t.string :document_type_code, :null => false, :limit => 2  
    ... 
    t.timestamps 
end 

如何產生document_no在交易?

document = Transaction.new 
document.document_type_code = 'PR' 
document.document_no = ?????? 
... 
document.save! 
+0

一個範圍是否':id'事或者訂單是否可以是'document_no => PR00001,document_no => PR00002'?您也可以在document_no中存儲一個整數,並將'document-no/document_type_code'設置爲複合鍵。 – Reactormonk 2012-04-04 10:56:54

回答

2

使用紅寶石法 '下一步':

irb(main):019:0> 'PR000001'.next 
=> "PR000002" 

您也可以使用方法 'SUCC':

irb(main):022:0> 'PR000001'.succ 
=> "PR000002" 

拿上鍊接一看:

http://www.devarticles.com/c/a/Ruby-on-Rails/Iterating-and-Incrementing-Strings-in-Ruby/3/

編輯:

可以得到增量文件不一樣:

transaction = Transaction.last 
transaction.nil? 'PR000001' ? : transaction.document_no.succ 
OR 
transaction.nil? 'PR000001' ? : transaction.document_no.next 

希望可以幫助。

+0

看看編輯部分。 – Vik 2012-04-04 11:24:45

0

你可以得到所有正在運行的編號的個數爲每個「document_type_code」和增量從1

你可能會寫這個

HTH