Ruby on rails 辅助ID自动递增
我有一个ActiveRecord模型,它要求有一个辅助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
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,在数据库表中添加第二个自动递增字段,或使该字段在数据库中唯一,这样至少可以防止两条记录具有相同的值。