旧代码,在带有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打球?
答案 0 :(得分:2)
嗯......只是今天才注意到,由于这个原因,一个涉及多个遗留数据库的应用程序在从3.0升级到3.1后停止了工作,即主键不再默认为旧数据库的id(等等) ?)。
我迄今为止的工作解决方案是明确提供
set_primary_key :id
在每个模型中。
此致 迈克尔