DataMapper, как создать несколько записей? - PullRequest
3 голосов
/ 30 июня 2010

Мой пример класса datamapper

class Simple
  include DataMapper::Resource
  property  :id, Serial
  property  :uid, Integer
end

И у меня есть идентификатор массива, который я хотел бы добавить.

items=[1,2,3,4,5,6,7,8,9,1,1,1,2,2,2,3]

Если я хочу найти любой из идентификаторов вмассив я бы сделал что-то вроде

Simple.all(:uid.in=>items) 

Есть ли способ сделать то же самое для создания нескольких записей, таких как:

Simple.create(:uid=>items) #this doesn't work by the way

Способ обойти это:

items.each{|item|Simplel.create(:uid=>item)} 

Но это не может быть эффективным, должен быть лучший способ.

Ответы [ 2 ]

2 голосов
/ 30 июня 2010

Нет более простого способа в DataMapper. Большинство ORM не беспокоятся о массовых операциях, потому что они часто требуют специфичных для базы данных реализаций. Одним из немногих ORM является SQLAlchemy: http://www.sqlalchemy.org/docs/05/sqlexpression.html#executing-multiple-statements

0 голосов
/ 28 марта 2013

Мне не известны какие-либо массовые операции вставки на уровне SQL. Подумайте о базе данных SQL, для которой data_mapper является уровнем абстракции. Напоминаем, что каждый автор / производитель базы данных реализовал свой собственный инструмент (например, SQLLDR для Oracle, BCP для MS SQL Server).

Для уровня абстракции нет возможности перенести это в единый интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...