如何在PostgreSQL/JDBC自动重新添加时使用ActiveRecord复制部分记录';id';专栏?
我试图在JRuby 1.7下使用ActiveRecord 3.2和PostgreSQL在表之间复制(部分)记录 本文提供的指导非常好,可以在Ruby下工作,但在使用如何在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”] 然后,我根据特定的
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”
,但永远不会更改插入
列表。堆栈中更高级别的东西正在生成该查询,这就是您需要查看的地方。