我想使用类似下面的内容,一次性插入1.000.000语句到我的数据库中。 但在我的模型中,我有一个 before_create:build_a_detail ,它会在user_node_scores中的每个记录中插入另一个表中的相关记录。它们通过has_one,belongs_to关系和外键关联。
但是如何通过单个质量插入来维持这种关联呢?
inserts = []
TIMES.times do
inserts.push "(3.0, '2009-01-23 20:21:13', 2, 1)"
end
sql = "INSERT INTO user_node_scores (`score`, `updated_at`, `node_id`, `user_id`) VALUES #{inserts.join(", ")}
答案 0 :(得分:0)
正如我所看到的,你在这里尝试做的是使用原始的sql来插入记录,所以你可以使用原始的ActiveRecord连接来执行你的sql命令,(不需要通过ActiveRecord模型回调)
例如:
class User < ActiveRecord::Base
def raw_sql_insert(sql)
ActiveRecord::Base.connection.execute(sql)
end
end
然后拨打User.new.raw_sql_insert(<your insert sql>)
。