2015-05-14 2 views

ответ

3

destroy_all работает над отношением. Почему бы не сделать

Foo.where(foo: bar).destroy_all 
1

Foo.destroy_all("foo = ?", @bar), Это недействительно.

С apidoc, мы найдем:

destroy_all(conditions = nil) public 

destroy_all метод принимает только один аргумент, аргумент может быть строка, массив или хэш. Вы не можете передать два аргумента.

Таким образом, вы можете написать так:

Foo.destroy_all("foo = #{@bar}") 
Foo.destroy_all(foo: @bar) 
Foo.where(foo: @bar).destroy_all 
+0

Вы можете быть предметом для 'SQL' атак там. – cybertextron

+0

Да, мы должны думать о последствиях безопасности при использовании внешней строки в SQL. – pangpang

Смежные вопросы