在 Rails 中使用预处理语句插入多行

Using prepared statement in Rails to insert multiple rows

我目前正在使用 PostgreSQL 进行 RoR。

ActiveRecord基本上满足了大部分的数据检索需求。但是,在某些情况下,似乎使用一条语句会更有效率。

所以,是否可以像下面这样用一个prepared statement做多个insert?或者我必须自己附加原始 sql 语句?

INSERT INTO films (code, title, did, date_prod, kind) VALUES
    ('B6717', 'Tampopo', 110, '1985-02-10', 'Comedy'),
    ('HG120', 'The Dinner Game', 140, DEFAULT, 'Comedy'), ...;

试试这个

user_string = " ('code1','title1', 'aaa', ...), ('code2','title2'...)"

User.connection.insert("INSERT INTO films (code, title, did, date_prod, kind)VALUES"+user_string) 

经过两年的 RoR 工作经验,

有一个叫做 activerecord-import 的 gem 可以做这件事。这是示例代码。

books = Array.new
books << Book.new(title: "Programming Ruby", author: "Dave Thomas")
books << Book.new(title: "Agile Web Development with Rails 5", author: "Sam Ruby")
Book.import books