无法在Rails 3.1上设置UUID主键

时间:2011-09-12 08:51:12

标签: ruby-on-rails postgresql ruby-on-rails-3.1 jrubyonrails

旧代码,在带有PostgreSQL 9.0的JRuby 1.6.4上的Rails 3.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,但是在记录保持不变之前,它拒绝做任何事情。不幸的是,没有太多人在Rails-land中使用UUID主键,因此Google不太有用。

其他任何人都在运行类似的设置,那已经找到了正确的回调魔法让3.1打球?

1 个答案:

答案 0 :(得分:2)

嗯......只是今天才注意到,由于这个原因,一个涉及多个遗留数据库的应用程序在从3.0升级到3.1后停止了工作,即主键不再默认为旧数据库的id(等等) ?)。

我迄今为止的工作解决方案是明确提供

set_primary_key :id

在每个模型中。

此致 迈克尔