我的示例datamapper类
class Simple
include DataMapper::Resource
property :id, Serial
property :uid, Integer
end
我想添加一个数组id uid。
items=[1,2,3,4,5,6,7,8,9,1,1,1,2,2,2,3]
如果我想搜索数组中的任何id,我会做类似
的事情Simple.all(:uid.in=>items)
有没有办法在创建多个记录时执行相同操作,例如:
Simple.create(:uid=>items) #this doesn't work by the way
解决这个问题的方法是:
items.each{|item|Simplel.create(:uid=>item)}
但这不可能有效,必须有更好的方法。
答案 0 :(得分:2)
DataMapper中没有更简单的方法。大多数ORM不会为批量操作而烦恼,因为它们通常需要特定于数据库的实现。其中少数ORM之一是SQLAlchemy:http://www.sqlalchemy.org/docs/05/sqlexpression.html#executing-multiple-statements
答案 1 :(得分:0)
我不知道SQL层上有任何批量插入操作。想想data_mapper是抽象层的SQL数据库。请注意,每个数据库作者/制造商都实现了自己的工具(例如,SQLLDR for Oracle,BCP for MS SQL Server)。
抽象层无法将其带入单个界面。