у меня есть модель отчета, как это: -Как вставить все вложенные атрибуты в объеме с использованием рельсов активной записи
class Report < ActiveRecord::Base
has_many :report_clients
accepts_nested_attributes_for :report_clients, :reject_if => proc { |attributes| attributes['client_id'].blank? }, :allow_destroy => true
end
И отчет клиента модель походит
class ReportClient < ActiveRecord::Base
belongs_to :report
end
Во время доклада создание моей структуры параметров будет как
Report.create({name: params[:name], report_clients_attributes: [{client_id: 1}, {client_id:2}]})
Он будет запускать 1 запрос для вставки отчета и 2 запроса для вставки report_clients.
Обычно я вставлял 1000 report_clients против каждого отчета, что приводит к запросам в 1000 кв.
Я знаю, я могу решить проблему, используя объемную вставку, написав исходную вставку sql. Но хотелось бы знать, есть ли другой способ/лучший способ сделать это.
Спасибо @RSB за вашу помощь. Будет ли валидация для модели отчета работать в этом случае. –
Да, он выполняет проверки, вы можете использовать 'save!' Или добавить вложенные клиенты в 'if save'. Я добавил все в блок 'transaction' для обработки и другие ошибки базы данных. – RSB
Когда я хочу запустить ReportClient.import (report_clients_objects) , он показывает *** Класс создает много без проверок или обратных вызовов *** –