Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails中如何使用模型&x27;活动记录“where”的方法?_Ruby On Rails_Ruby On Rails 4_Activerecord - Fatal编程技术网

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并将其放入
中的
位置。