我的应用程序需要自动为某种类型的记录分配一个数字(从1001开始)(想想像检查寄存器一样)。该数字应显示为输入屏幕的一部分,但当然不可修改。
我如何在Rails中执行此操作?
注意:这与id字段无关。
答案 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);
希望这就是你所需要的!