Rails范围与集合

时间:2014-04-17 15:12:02

标签: ruby-on-rails ruby mongoid

我在一个项目上工作,并且我在一个我不知道的范围内使用。 我有这两个定义:

Class Mymodel
scope :active, where({ active: true })

Class SecondModel
has_many :mymodel

然后我用它们像:

instance_var = SecondModel.new
instance_var.mymodels.active

这件事确实有效,我的问题是它是否是一种很好的方式 它是如何工作的,因为范围与类方法等效? 我使用mongoid作为数据库部分。

1 个答案:

答案 0 :(得分:1)

它起作用因为
instance_var.mymodels可以是Mongoid::Criteria个实例。

因此它可以接受Mymodel的所有范围。

现在ActiveRecord中范围和类方法之间的实际区别(据我记得Mongoid也是如此),范围必须返回一个关系。

使用关系和范围没有问题,实际上它是非常合乎逻辑的,这是我们通常使用它们的方式。