我在充当各种各样的占位符表中的记录,并不代表实际的数据。这是糟糕的设计,我知道,但我有一些很尴尬的要求,我必须处理我也没有看到其他的解决方案,所以这是一个有点修补程序本身。Rails的隐藏特定的记录从所有选择*类型查询
现在可以说,我有一系列的SELECT * S在我的应用程序,我不希望有明确排除为他们每个人的那一条记录。有什么我可以放入我的模型,以排除它的所有查询,除了明确调用它的那些?或者,也许我可以直接把我的PG数据库中的一些逻辑?
这是在表中的第一个纪录的0.1
我在充当各种各样的占位符表中的记录,并不代表实际的数据。这是糟糕的设计,我知道,但我有一些很尴尬的要求,我必须处理我也没有看到其他的解决方案,所以这是一个有点修补程序本身。Rails的隐藏特定的记录从所有选择*类型查询
现在可以说,我有一系列的SELECT * S在我的应用程序,我不希望有明确排除为他们每个人的那一条记录。有什么我可以放入我的模型,以排除它的所有查询,除了明确调用它的那些?或者,也许我可以直接把我的PG数据库中的一些逻辑?
这是在表中的第一个纪录的0.1
添加默认范围
default_scope where('id != 0')
到模型......
无论如何你w蚂蚁避免在某些查询中的默认范围,你可以有Model.unscoped...
那里...
一个解决方案的ID是定义一个default_scope
将排除这些记录,看到the doc
这样算下来YourModel.all
时,如果default_scope
在YourModel
排除正确的记录,你会得到你想要的。
但正如你所说,这是不好的设计!
创建一个视图中排除:
create view v as
select *
from t
where id != 0
现在从视图中选择:
select *
from v
嗨pjam,这是接近,但不是我正在寻找。我还需要能够访问我的占位符的记录,我只是不希望它出现在查询它是不是specificially要求。有了您的解决方案,将不会出现在一般的'MyModel.all',但它也产生一个错误,如果我明确地寻找它通过它的ID值。有什么办法呢? – Noz
糟糕,没关系。拉胡尔提到了如何处理这个问题。 – Noz