Как насчет использования ловушки after_initialize?
Я работаю в предположении, что вы не хотите, чтобы UUID был вашим первичным ключом (иначе все сложнее).Я бы избежал этого для ваших целей.
Я делаю все это без тестирования, к сожалению, поэтому я не могу быть на 100% уверен, что я не сделал никаких опечаток.Если у вас возникнут какие-либо проблемы, не стесняйтесь сообщать мне.
Во-первых, вам нужно добавить uuidtools в ваш проект.Предполагая, что rails 2, это в config / environment.rb
Rails::Initializer.run do |config|
..
# You can try a later uuidtools version, but this is the one I've worked with
config.gem "uuidtools", :version => '2.1.1'
..
end
После того, как вы добавили вышеперечисленное, запустите "sudo rake gems: install", и он должен загрузить и установить гем.
Затем в вашей модели добавьте этот код:
validates_length_of :uuid, :is => 36 # Untested.. makes sense to me though
def after_initialize
self.uuid ||= UUIDTools::UUID.random_create.to_s
end
И в процессе миграции для создания таблицы:
create table :photo_albums do |t|
..
t.string :id, :limit => 36
..
end
Надеюсь, это поможет.
Oskar