检查Rails中是否存在记录(来自ID数组)?

Lan*_*ard 18 sql ruby-on-rails

我可以这样做来检查记录是否存在(比如说"1"存在,但"2"和"3"不存在):

Model.exists?(:id => [1, 2, 3]) #=> true
Run Code Online (Sandbox Code Playgroud)

我该怎么做,所以:

Model.not_exists?(:id => [1, 2, 3]) #=> true
Run Code Online (Sandbox Code Playgroud)

GSt*_*Sto 28

只需添加一个!操作者

!Model.exists?(:id => [1, 2, 3]) #=> true
Run Code Online (Sandbox Code Playgroud)

  • 我问如何说'2`和`3`不存在,如何让它返回false.`!Model.exists?(:id => [1,2,3])`如果存在`1`则返回`false`,而我想要`Model.not_exists?(:id => [1,2,3] )`如果不存在则返回true. (2认同)
  • `Model.find(ids_ary).count` 然后 `rescue ActiveRecord::RecordNotFound` (2认同)

小智 5

如果您只需要通过ID搜索记录,您可以试试这个

class Model
  def self.not_exists?(ids)
    self.find(ids)
    false
  rescue
    true
  end
end
Run Code Online (Sandbox Code Playgroud)

如果任何ID不存在,该find方法将引发一个ActiveRecord :: RecordNotFound异常,我们只是捕获并返回true.

请原谅我的英文:)

  • 这不应该是公认的答案,救援,因为它的使用是危险的,“查找”将加载您只关心原始记录是否存在的记录。答案属于应该是被接受的答案 (2认同)