У меня есть модель Foo и модель Bar, оба из которых has_many: bar_foos (а затем has_many друг друга: through =>: bar_foos). Это просто много-много-много отношений между Foo и Bar через модель BarsFoo.
Я хочу удалить несколько строк в таблице bar_foos. В частности, я хочу удалить любую запись bar_foo, которая относится к любому из данного набора Foos и к любому из данного набора Bars. Для повышения производительности я бы хотел сделать один вызов базы данных, чтобы сделать это.
Соответствующий оператор SQL будет:
DELETE FROM bar_foos WHERE bar_id IN ( ?, ?, ? ) AND foo_id in ( ?, ?, ? )
... при замене ?
на соответствующие идентификаторы.
Как мне это сделать с помощью Rails 2.3.x?
В идеале, я бы не писал сам SQL, а выполнял бы вызовы методов ActiveRecord. Однако я сомневаюсь, что это существует.
За исключением этого, я сам напишу оператор SQL, но:
- Я бы хотел избежать жесткого кодирования имен таблиц / столбцов в строке SQL
- Я бы хотел использовать какой-то автоматический (то есть надежный) метод для экранирования параметров SQL вместо простого объединения строк.