2011-11-12 41 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); 

希望这是你需要的!