插入外键错误

时间:2015-02-17 11:08:41

标签: sql ruby-on-rails ruby postgresql activerecord

这是我的情况:我有两张桌子,门票和线条都属于门票。

我要插入很多行,所以我使用了activerecord-import gem。

我为每一行创建一个新的票证:

  t = Ticket.new(store: s)
  t.version             = ticket_thrift.attr.version.to_i
  t.uid                 = ticket_thrift.attr.uid

和一行:

 line = Line.new(ticket: t)

我在最新的两个数组中添加:

  @@list_tickets << t
  @@list_lines   << lines

然后当我有20000我试图插入时:

 if(@@list_tickets.count == 20000)
  Receipt.import @@list_tickets
  Lines.import   @@list_lines
 end

但我有一个错误,因为所有属性似乎都是零值。 你有想法用这个宝石支持外键吗?

提前谢谢

2 个答案:

答案 0 :(得分:0)

您不应该为对象分配ID:

t.version             = ticket_thrift.attr.version.to_i

你应该这样做:

t.version             = ticket_thrift.attr.version

对于您的模型,您应首先创建故障单然后创建线路,然后将该线路与故障单关联:

ticket = Ticket.new(params)
ticket.save!
line = Line.new(params)
line.ticket = ticket
line.save!

这同样适用于您的其他关系。

另请查看documentation about associations

答案 1 :(得分:0)

问题在于activerecord-import gem不能让你进行级联插入。 在表格行中,我对票证进行了外键引用,但票证未在数据库中创建,因此表格行中的字段id_ticket为零。