如何分配我自己的自动递增字段?

时间:2011-11-12 08:23:11

标签: ruby-on-rails activerecord

我的应用程序需要自动为某种类型的记录分配一个数字(从1001开始)(想想像检查寄存器一样)。该数字应显示为输入屏幕的一部分,但当然不可修改。

我如何在Rails中执行此操作?

注意:这与id字段无关。

1 个答案:

答案 0 :(得分: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的值分配给应该增加的值,您也可以使用它来获取应该在表单中显示的值。可以使用jQuery轻松禁用该表单。

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

希望这就是你所需要的!