将activeuuid gem用于rails中的现有数据库

时间:2013-10-03 06:22:57

标签: ruby-on-rails-3

我需要实现activeuuid gem才能拥有UUID而不是默认的Rails id。我们可以实现它来创建新的迁移:

 class CreateStudents < ActiveRecord::Migration
  def change
    create_table :students, :id => false do |t|
      t.uuid :id, :primary_key => true
      t.string :name
      t.string :email

      t.timestamps
    end
  end
end

在模型中,我们将ActiveUUID :: UUID包括为:

class Student < ActiveRecord::Base
  attr_accessible :email, :name
  include ActiveUUID::UUID
end

现在我已经拥有了一个数据库,那么我如何实现activeuuid gem以获得UUID而不是现有数据库的默认Rails id? 需要在所有迁移中进行更改还是什么? 在这方面需要帮助。感谢

1 个答案:

答案 0 :(得分:0)

UUID存储为二进制字段,有16个位置,如我在此处找到的:https://github.com/jashmenn/activeuuid/blob/master/lib/activeuuid/patches.rb#L62

它适用于我(没有记录的现有表格):

def change
  reversible do |dir|
    change_table :payments do |t|
      dir.up   { t.change :id, :binary, limit: 16, :primary_key => true }
      dir.down { t.change :id, :integer }
    end
  end
end

不要忘记将这些行添加到模型中:

include ActiveUUID::UUID
natural_key :at_least_one_field_here

github repo中的更多信息:https://github.com/jashmenn/activeuuid/