Ruby on rails 在Rails中如何使用模型&x27;活动记录“where”的方法?
通常我们使用Ruby on rails 在Rails中如何使用模型&x27;活动记录“where”的方法?,ruby-on-rails,ruby-on-rails-4,activerecord,Ruby On Rails,Ruby On Rails 4,Activerecord,通常我们使用Model.where(name:'John')查找记录。假设我在模型中有一个名为status的方法,它执行一些计算并输出一个字符串。我如何在中使用它?现在,如果我使用Model.where(status:'active')它说PG::UndefinedColumn:ERROR:column Model.status不存在不,您不能where用于SQL条件,如果用Ruby计算状态,则不能在where中使用它,如果您要问的是如何在检索记录之前让SQL server将status应用为筛
Model.where(name:'John')
查找记录。假设我在模型中有一个名为status
的方法,它执行一些计算并输出一个字符串。我如何在中使用它?现在,如果我使用Model.where(status:'active')
它说PG::UndefinedColumn:ERROR:column Model.status不存在
不,您不能where
用于SQL条件,如果用Ruby计算状态,则不能在where
中使用它,如果您要问的是如何在检索记录之前让SQL server将status
应用为筛选器,则不能
- 实际上,一种选择是检索所有记录,然后使用select获取所需的内容。这是非常低效的
- 另一种选择是编写SQL逻辑片段,并将其直接插入where。这并不容易,但非常有效
- 最后一个解决方案是,在保存前,通过
将状态设置为computer for you,并将其存储在表中。然后,您可以使用常规的where来筛选所需的记录。这样做的缺点是,您有一个新的额外列
那我该怎么办?唯一的选择是循环遍历每个项目,并将匹配的项目放到一个数组中。您有两种可能。您必须使用对关系添加一个,然后选择方法来选择状态正确的关系,或者(如果您关心性能),您可以将状态计数写入SQL并将其放入中的位置。