Как мне воссоздать следующий запрос в языке Rails, чтобы он возвращал количество обработанных строк?
self.connection.execute('DELETE FROM `cd_artist`
LEFT JOIN `cdpedia` ON cd_artist.id = cdpedia.`artistId`
WHERE artistId IS NULL;')
Я понимаю, что я должен использовать что-то вроде Artist.find_by_sql
, чтобы оно возвращало что-то, но это дает мне ошибку.
Возможно, есть более элегантный способ сделать это?
Я хочу избежать того, чтобы Rails сначала проводил поиск в базе данных, затем захватывал идентификаторы и удалял записи с помощью Object.destroy
или даже Object.delete(id)
, поскольку вызов SQL намного быстрее (если у вас правильные индексы), но мне любопытно, что такое «правильный» способ сделать это.