2011-11-12 40 views
0

我的應用程序需要自動將一個數字(從1001開始)分配給某種類型的記錄(想像一個檢查寄存器)。該數字應顯示爲輸入屏幕的一部分,但當然不可修改。如何分配我自己的自動遞增字段?

我如何在Rails中做到這一點?

注意:這與id字段無關。

回答

2

據我所知,您只能將一個auto_increment列設置爲一個表格,並且需要將其定義爲primary key。所以這不是您的選擇,因爲id字段是您的表的primary key

所以你需要做這個應用程序內部。只是一個integer列添加到表:

add_column :table_name, :column_name, :integer 

然後添加到您的模型的方法是計算出在創建的最後一個數據集的列的值。

def self.last_<column_name>_used 
    return last.<column_name> unless last.nil? 
    return 1000 
end 

def self.next_<column_name>_to_use 
    last_<column_name>_used+1 
end 

然後你可以用filter到全自動分配Model.next__to_use到應incremended值,你也可以用它來獲取應顯示在表單中的值。可以使用jQuery輕鬆禁用表單。

$('#model_<column_name>').attr("disabled", true); 

希望這是你需要的!