Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.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 结果在其上有许多联系 球门_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 结果在其上有许多联系 球门

Ruby on rails 结果在其上有许多联系 球门,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有一个项目,一个项目有许多与之相关的活动项。 对于下一个特性,我想选择一个具有活动的给定项目,但只选择那些在给定日期范围内的活动 模型 我已经包含了Invoice模型,因为我还希望在代码的下一次迭代中包含Invoice实例 生成的SQL如下所示: SELECT "projects"."id" AS t0_r0, "projects"."title" AS t0_r1, "projects".&q

我有一个项目,一个项目有许多与之相关的活动项。 对于下一个特性,我想选择一个具有活动的给定项目,但只选择那些在给定日期范围内的活动

模型 我已经包含了Invoice模型,因为我还希望在代码的下一次迭代中包含Invoice实例

生成的SQL如下所示:

SELECT "projects"."id" AS t0_r0, "projects"."title" AS t0_r1, "projects"."description" AS t0_r2, "projects"."created_at" AS t0_r3, "projects"."updated_at" AS t0_r4, "projects"."slug" AS t0_r5, "activities"."id" AS t1_r0, "activities"."title" AS t1_r1, "activities"."body" AS t1_r2, "activities"."hours" AS t1_r3, "activities"."done_at" AS t1_r4, "activities"."project_id" AS t1_r5, "activities"."created_at" AS t1_r6, "activities"."updated_at" AS t1_r7, "activities"."invoice_id" AS t1_r8, "activities"."service" AS t1_r9 FROM "projects" LEFT OUTER JOIN "activities" ON "activities"."project_id" = "projects"."id" WHERE ("activities"."done_at" BETWEEN '2014-08-01' AND '2014-08-31') AND "projects"."slug" = 'my-website' AND "projects"."id" IN (1)  ORDER BY "projects"."id" ASC
#<Project id: 1, title: "My Website", description: "HTML Templates for their new website", created_at: "2014-09-24 07:35:39", updated_at: "2014-09-25 07:10:19", slug: "my-website"> 
生成的项目实例如下所示:

SELECT "projects"."id" AS t0_r0, "projects"."title" AS t0_r1, "projects"."description" AS t0_r2, "projects"."created_at" AS t0_r3, "projects"."updated_at" AS t0_r4, "projects"."slug" AS t0_r5, "activities"."id" AS t1_r0, "activities"."title" AS t1_r1, "activities"."body" AS t1_r2, "activities"."hours" AS t1_r3, "activities"."done_at" AS t1_r4, "activities"."project_id" AS t1_r5, "activities"."created_at" AS t1_r6, "activities"."updated_at" AS t1_r7, "activities"."invoice_id" AS t1_r8, "activities"."service" AS t1_r9 FROM "projects" LEFT OUTER JOIN "activities" ON "activities"."project_id" = "projects"."id" WHERE ("activities"."done_at" BETWEEN '2014-08-01' AND '2014-08-31') AND "projects"."slug" = 'my-website' AND "projects"."id" IN (1)  ORDER BY "projects"."id" ASC
#<Project id: 1, title: "My Website", description: "HTML Templates for their new website", created_at: "2014-09-24 07:35:39", updated_at: "2014-09-25 07:10:19", slug: "my-website"> 
问题 当我迭代得到的@project时,我看到了它的所有相关活动。不是在给定日期范围内的。因此,我看到的不是预期的41项相关活动,而是所有200多项活动


我做错了什么?

事实证明,应该使用大小来计算集合中的项目数。如果使用count,Rails将再次命中数据库。*面团*

尝试更改此查询@project=project。包括:activities.where activities:{done_at:params[:from]…params[:to]}。引用:activities.friendly.find params[:id]到@project=project。包括:activities.references:activities.friendly.find params[:id]。其中activities:{done_at:params[:from]…params[:to]}结果是未定义的方法where'对于`@anusha,您不能在find之后使用where,因为find返回对象或ActiveRecord::RecordNotFound。find必须是链中的最后一个调用,链中的其他方法需要返回ActiveRecord::Relation。