这是我的情况:我有两张桌子,门票和线条都属于门票。
我要插入很多行,所以我使用了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
但我有一个错误,因为所有属性似乎都是零值。 你有想法用这个宝石支持外键吗?
提前谢谢
答案 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!
这同样适用于您的其他关系。
答案 1 :(得分:0)
问题在于activerecord-import gem不能让你进行级联插入。 在表格行中,我对票证进行了外键引用,但票证未在数据库中创建,因此表格行中的字段id_ticket为零。