【发布时间】:2017-11-28 14:08:13
【问题描述】:
我有型号Store。我想通过Store.where(:google_place_id => 'XXXX') 检查数据库中是否存在条目。我只想检查它是否存在于数据库中,无论它是否(软)删除。
当我尝试这样做时,rails 会运行以下 SQL:
SELECT "stores".* FROM "stores" WHERE "stores"."deleted_at" IS NULL AND "stores"."google_place_id" = $1 LIMIT $2 [["google_place_id", "XXX"], ["LIMIT", 1]]
在做了一些研究之后,我偶然发现了 unscoped 属性,它会删除这个 deleted_at 子句,但同时也会删除整个 WHERE 子句。例如,如果我尝试这个 Store.where(:google_place_id => 'XXXX').unscoped 它运行这个 SQL SELECT "stores".* FROM "stores" WHERE "stores"."deleted_at" IS NULL AND "stores"."google_place_id" = $1 LIMIT $2 [["google_place_id", "XXX"], ["LIMIT", 1]]
有人可以澄清我做错了什么吗?
【问题讨论】:
-
您使用的是
acts_as_paranoid还是paranoiaGem? -
是的,我正在使用
paranoiagem。
标签: ruby-on-rails activerecord rails-activerecord