如何在PostgreSQL/JDBC自动重新添加时使用ActiveRecord复制部分记录';id';专栏?

如何在PostgreSQL/JDBC自动重新添加时使用ActiveRecord复制部分记录';id';专栏?,postgresql,activerecord,Postgresql,Activerecord,我试图在JRuby 1.7下使用ActiveRecord 3.2和PostgreSQL在表之间复制(部分)记录 本文提供的指导非常好,可以在Ruby下工作,但在使用activerecord jdbcpostgresql适配器时不能在JRuby下工作 我的两款车型(缔约方和持有人)具有(几乎)相同的属性。我删除了公共“id”列,这样就不会复制该列,并保留列的交点: columns=(Party.column\u name和Holder.column\u name)-[“id”] 然后,我根据特定的

我试图在JRuby 1.7下使用ActiveRecord 3.2和PostgreSQL在表之间复制(部分)记录

本文提供的指导非常好,可以在Ruby下工作,但在使用
activerecord jdbcpostgresql适配器时不能在JRuby下工作

我的两款车型(
缔约方
持有人
)具有(几乎)相同的属性。我删除了公共“id”列,这样就不会复制该列,并保留列的交点:

columns=(Party.column\u name和Holder.column\u name)-[“id”]

然后,我根据特定的持有人记录创建新的当事人记录:

parties\u创建=
Party.create(Holder.where(:title_id=>@title.id)。all(:select=>columns.join(“,”)。map(&:attributes))

而且,即使我确认
不包括“id”列

列为:[“第一名”、“中间名”、“其他名”]

jdbc适配器坚持将其包括在内:

SQL(11.0ms)在返回“id”的“parties”(“first_name”、“id”、“middle_name”、“other_name”)值('JOHN',NULL',HENRY',SMITH)中插入
ActiveRecord::JDBCError:org.postgresql.util.PSQLException:错误:“id”列中的null值违反了非null约束

我如何告诉适配器不要使用“id”列? 有人能提出一个工作建议吗

谢谢,
Tim

如果手动创建(:first\u name=>'a',:middle\u name=>'b',:other\u name=>'c')
,会发生什么情况?JDBC适配器不应该做类似的事情。它将添加
返回“id”
,但永远不会更改
插入
列表。堆栈中更高级别的东西正在生成该查询,这就是您需要查看的地方。