Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 辅助ID自动递增_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 辅助ID自动递增

Ruby on rails 辅助ID自动递增,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我有一个ActiveRecord模型,它要求有一个辅助id。我可以想出几种方法来实现它,但最好的方法是什么?是否可以在迁移中指定自动增量,还是应该在过滤器中指定 最佳做法是什么 谢谢。这里有一个解决方案 before_validation :add_secondary_id, :on => :create def add_secondary_id self.secondary_id = self.class.select(:secondary_id).order('secondary

我有一个ActiveRecord模型,它要求有一个辅助id。我可以想出几种方法来实现它,但最好的方法是什么?是否可以在迁移中指定自动增量,还是应该在过滤器中指定

最佳做法是什么

谢谢。

这里有一个解决方案

before_validation :add_secondary_id, :on => :create

def add_secondary_id
  self.secondary_id = self.class.select(:secondary_id).order('secondary_id DESC').first.secondary_id.to_i + 1
end

辅助自动递增列与正常的
id
有何不同?你能得到它的值吗?如果需要迁移数据库和更改ActiveRecord ID,次要ID将作为一个“一致ID”。你刚刚添加了一个竞争条件。我能想到的唯一其他对抗这种竞争条件的选项是使用UUID,在数据库表中添加第二个自动递增字段,或使该字段在数据库中唯一,这样至少可以防止两条记录具有相同的值。