我在Rails
中有以下控制器:
class FooController < ApplicationController
def delete_foo(bar):
Foo.destroy_all("foo = '#{@bar}'")
是
Foo.destroy_all("foo = ?", @bar)
总是有效吗?
答案 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