小编MiG*_*GnH的帖子

如何根据Mongoid中的关系设置可链接范围

问题已解决......原来有一个活动的记录方法已经过了写,现在一切都按预期工作了

我正在尝试设置范围,以便我可以进行看起来像这样的调用

Competitor.of_type(type).at_event(event)
Run Code Online (Sandbox Code Playgroud)

这将返回参加活动的所有类型的竞争对手My Models看起来像

class Competitor < Competitor
  belongs_to :type
  has_and_belongs_to_many :events
  scope :at_event, ->(event) {where(:event_ids.in => event.competitor_ids)}
  scope :of_type, ->(type) where(:type_id => type.id)                
end
Run Code Online (Sandbox Code Playgroud)

以下作品(返回mongoid标准)

Competitor.of_type(type)
Competitor.at_event(event)
Run Code Online (Sandbox Code Playgroud)

但当我链接它们时,它会打印出如下所示的内容:

#<Competitor:0x00000109e2b210>
#<Competitor:0x00000109e2ab08>
-------=-=------------------------------------
=> #<Mongoid::Criteria
selector: {},
options:  {},
class:    Competitor,
embedded: false>
Run Code Online (Sandbox Code Playgroud)

每个Competitor.of_type(类型)都有一个竞争者条目(第一个链接标准),如果我在查询上运行.count,我会得到数据库中竞争者的总数.

在范围的mongoid文档的顶部,它表示所有范围都是可链接的,并且也可以应用于关联,后面将在关系部分中讨论.不幸的是我没有看到关系子部分,我不能在主关系部分找到对范围的单一引用.

我能够得到以下内容以返回我想要的结果:

where(:id.in => event.competitor_ids).where(:type_id => type.id)
Run Code Online (Sandbox Code Playgroud)

但如果查询的任何部分被拆分为单独的方法或范围,它将失败并提供我上面显示的结果.

scope ruby-on-rails mongoid

12
推荐指数
1
解决办法
5062
查看次数

标签 统计

mongoid ×1

ruby-on-rails ×1

scope ×1