Не могу установить первичный ключ UUID на Rails 3.1

Старый код, отлично работает в Rails 3.0 на JRuby 1.6.4 с PostgreSQL 9.0:

class User < ActiveRecord::Base
    before_validation(:on => :create) do
        self.id = generate_random_uuid
    end

    # Mode code, including a definition for generate_random_uuid that works.
end 

Rails 3.1 молча не может установить первичный ключ.

Немного покопался и придумал update_column, но это отказывается что-либо делать, пока запись не будет сохранена. К сожалению, не так много людей используют первичные ключи UUID в Rails-land, поэтому Googles не так полезны.

Кто-нибудь еще работает с подобной установкой, которая разобралась в правильной магии обратного вызова, чтобы получить 3.1 для игры в мяч?

1 ответ

Решение

Что ж, только сегодня заметил, что приложение, включающее несколько устаревших баз данных, перестало работать после обновления с 3.0 до 3.1 именно по этой причине, то есть первичный ключ больше не идентифицируется по умолчанию для устаревших баз данных (и тому подобное?).

Мое до сих пор работающее решение было явно дать

set_primary_key :id

в каждой из рассматриваемых моделей.

С уважением Майкл

Другие вопросы по тегам