Ruby on rails 如何就地筛选关系

Ruby on rails 如何就地筛选关系,ruby-on-rails,Ruby On Rails,我想这是一个非常基本的问题,但我很难找到答案。也许这不是人们做的事情,如果是这样的话,我想知道为什么 在show action中,通常我有如下代码: @结构=结构。其中id:params[:id] 这会得到一个包含唯一结构和给定id的关系。该结构有许多规划。我想要的是,我的结构关系包含已过滤的具有规划关系的结构。所以,我不希望结构的范围局限于它们的规划,我希望这些结构上的规划本身已经被过滤。我想得到一个包含一个结构的关系,这个结构只有它的一个子集。这有意义吗 编辑: 我开始明白为什么这没有意义,

我想这是一个非常基本的问题,但我很难找到答案。也许这不是人们做的事情,如果是这样的话,我想知道为什么

在show action中,通常我有如下代码:

@结构=结构。其中id:params[:id]

这会得到一个包含唯一结构和给定id的关系。该结构有许多规划。我想要的是,我的结构关系包含已过滤的具有规划关系的结构。所以,我不希望结构的范围局限于它们的规划,我希望这些结构上的规划本身已经被过滤。我想得到一个包含一个结构的关系,这个结构只有它的一个子集。这有意义吗

编辑:

我开始明白为什么这没有意义,但也很难表达清楚。这个,

@structure           = Structure.where(id: params[:id])
@structure.plannings = @structure.plannings.where(audience_ids: "1")
沿无法修改关联“StructurePlanning”的行引发错误,因为源反射类“Planning”通过以下方式关联到“Course”:has\u many。我在这里得到的信息是:你试图做的事情比你想象的要复杂


我想我应该返回一个json,它看起来就像我想要的那样,而不是试图在适当的位置修改关系。

如果对于作为结构关系获取的所有计划,您的条件总是相同的,那么您可以在Rails 4上可用的关系中使用

那样 结构。在哪里。第一,规划
将所需范围应用于规划。

这对我来说是有道理的,但可能是一种误解。如果我可以说,嘿,数据库给我所有的结构和A,B,C,然后我觉得我应该可以说,嘿,数据库给我所有的结构,但当我问他们的计划,我只想要那些与D,E,和F。我有点不清楚哪两件事你想要。您是A希望只获取规划符合您的标准的结构,还是B希望首先选择的所有结构,但只希望具有规划标准的结构的规划。如果答案是A,那么您将需要“连接”。如果答案是B,那么“包括”和“范围”。肯定是B。问题是我不只是想要那些规划,我想要一个只有这些规划的结构对象。你知道的?我要把它放好。我非常清楚如何使用Structure.whereid:params[:id].plannings.scopesome scope。问题是希望在适当的位置执行此操作,以便返回的关系是一个具有较少位置的结构。然后,如果范围界定无法实现您想要的,我想我需要知道您为什么只希望这些计划存在。我想我问了一个错误的问题。我了解这个范围的东西,我知道我可以很容易地得到我想要的计划。不过,我想要的是为一个结构对象提供服务,该对象只具有所需的规划。你知道我的意思吗?在客户方面,我不想知道还有其他计划存在。我想我可以用一些讽刺的魔法来完成这一点,但我想我只需要渲染一个包含我想要的规划的对象。
class Structure < ActiveRecord::Base
  has_many :plannings -> { where(attribute_a: true) }
end