什么是消毒destroy_all的最佳方法--Rails

时间:2015-05-14 04:00:49

标签: sql ruby-on-rails ruby ruby-on-rails-4

我在Rails中有以下控制器:

class FooController < ApplicationController
    def delete_foo(bar):
        Foo.destroy_all("foo = '#{@bar}'")

Foo.destroy_all("foo = ?", @bar)

总是有效吗?

2 个答案:

答案 0 :(得分:3)

destroy_all适用于某种关系。为什么不

 Foo.where(foo: bar).destroy_all

答案 1 :(得分: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