如何就地筛选关系



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

在一个表演动作中,通常我有这样的代码:

@structure = Structure.where(id: params[:id])

这为我提供了一个包含唯一结构和给定id的关系。结构has_many计划。我想要的是一种让我的"结构"关系包含具有经过过滤的规划关系的结构的方式。所以,我不希望这些结构的范围局限于它们的规划,我希望这些结构本身的规划已经被过滤掉。我想得到一个关系,它包含一个只有其规划子集的结构。这有道理吗?

编辑:

我开始明白为什么这没有意义,但也很难表达出来

@structure           = Structure.where(id: params[:id])
@structure.plannings = @structure.plannings.where(audience_ids: "1")

沿着CCD_ 3的线抛出错误。我在这里得到的信息是:你试图做的事情比你想象的要复杂。

我想我应该只返回json,它看起来像我想要的样子,而不是试图修改关系。

如果作为结构关系提取的所有计划的标准始终相同,则可以在关系中使用默认范围(可在Rails 4上使用)

class Structure < ActiveRecord::Base
has_many :plannings -> { where(attribute_a: true) }
end

这样
Structure.where( ... ).first.plannings
将对规划应用所需的范围。

最新更新