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

4

1 回答 1

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/

于 2015-07-23T19:01:44.490 回答