Ruby&;Activerecord-处理查询结果
我需要帮助。我正在优化Ruby项目。有很多单个查询,因此我使用ID数组一次读取它们,例如:Ruby&;Activerecord-处理查询结果,ruby,arrays,activerecord,Ruby,Arrays,Activerecord,我需要帮助。我正在优化Ruby项目。有很多单个查询,因此我使用ID数组一次读取它们,例如: projects = Project.find_by_id(array_of_ids) 我在速度上有了显著的提高。但问题是,当我想在这样的结果中搜索时,我如何处理这样的结果 p = projects .find{ |project| project.id==pr.id } # doesn't work 我是否可以将“项目”转换为数组或进一步使用活动记录方法? 我可以用Activerecord获得按参数
projects = Project.find_by_id(array_of_ids)
我在速度上有了显著的提高。但问题是,当我想在这样的结果中搜索时,我如何处理这样的结果
p = projects .find{ |project| project.id==pr.id } # doesn't work
我是否可以将“项目”转换为数组或进一步使用活动记录方法?
我可以用Activerecord获得按参数分组的二维“项目”数组吗?这里有一些东西你没有看到
a) projects = Project.find_by_id(array_of_ids)
将只给出一个结果
要获取和数组,您需要像这样启动查询
a) projects = Project.find_all_by_id(array_of_ids)
如果Rails 3+可以很容易地用arel实现您想要的功能,那么您将使用哪个版本的Rails
b) projects = Project.where("id in (?)",array_of_ids)
现在,这将为您提供一个关系对象,您可以在其上链接进一步的查询
如果您使用的是Rails 2.3+,那么最好使用命名范围或lambda
希望这对你有所帮助这里有一些东西你还没有找到
a) projects = Project.find_by_id(array_of_ids)
将只给出一个结果
要获取和数组,您需要像这样启动查询
a) projects = Project.find_all_by_id(array_of_ids)
如果Rails 3+可以很容易地用arel实现您想要的功能,那么您将使用哪个版本的Rails
b) projects = Project.where("id in (?)",array_of_ids)
现在,这将为您提供一个关系对象,您可以在其上链接进一步的查询
如果您使用的是Rails 2.3+,那么最好使用命名范围或lambda
希望获得此帮助如果您希望返回ActiveRecord::Relationship对象(您可以对其执行进一步的SQL查询)而不是数组,则需要使用
scoped_by*
方法而不是find_by*
此处可以找到范围由*
确定的解释:
如果您使用的是scoped\u by.*
,那么您的代码应该是这样的
projects = Project.scoped_by_id(array_of_ids)
p = projects.find(pr.id)
如果要返回ActiveRecord::Relationship对象(您可以对其执行进一步的SQL查询),而不是数组,则需要使用
scoped\u by.*
方法,而不是find\u by.*
此处可以找到范围由*
确定的解释:
如果您使用的是scoped\u by.*
,那么您的代码应该是这样的
projects = Project.scoped_by_id(array_of_ids)
p = projects.find(pr.id)