Можно ли удалить_all с условиями внутреннего соединения?

Мне нужно удалить сразу много записей, и мне нужно сделать это на основе условия в другой модели, которое связано отношением «принадлежит_то». Я знаю, что могу перебирать каждую проверку условия, но с моим большим набором записей это занимает вечность, потому что для каждого «принадлежит_то» выполняется отдельный запрос.

Вот пример. У меня есть модель «Продукт», которая «принадлежит_к» и «Художник», и можно сказать, что у художника есть свойство «is_disabled».

Если я хочу удалить все продукты, принадлежащие художникам-инвалидам, я хотел бы иметь возможность сделать что-то вроде:

Product.delete_all(:joins => :artist, :conditions => ["artists.is_disabled = ?", true])

Возможно ли это? Раньше я делал это непосредственно в SQL, но не уверен, можно ли это сделать через рельсы.

8
задан Brian Tompsett - 汤莱恩 11 July 2015 в 19:55
поделиться