Rails:带范围的自动增量列

时间:2012-01-13 07:00:43

标签: mysql ruby-on-rails ruby

我有项目和问题。问题编号(不是ID)必须是自动增量,但是使用project_id确定范围。任何宝石或简单的方法来实现这一目标?谢谢!

编辑:acts_as_list将完成这项工作,但如果删除了某条记录会怎么样?下一期将是它的号码。

2 个答案:

答案 0 :(得分:3)

在您的问题类中:

belongs_to :project
before_validation( :on => :create ) do 
  self.issue_number = self.project.issues.collect { | issue | issue.issue_number }.max + 1
end

(或左右) - 基本上,在创建新对象之前,找到与问题项目相关的问题的最大问题编号,增加该问题,并将其用于新的问题编号......

答案 1 :(得分:0)

你可以在Project问题关联上使用counter_cache并覆盖Project的decrement_counter什么也不做。