我需要实现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? 需要在所有迁移中进行更改还是什么? 在这方面需要帮助。感谢
答案 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/