Rails的作用域包含一个集合



我在一个项目中工作,我遇到了一个我不知道的范围使用。我有两个定义:

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

然后我用它们像:

instance_var = SecondModel.new
instance_var.mymodels.active

这件事实际上有效,我的问题是这是否是一种好的方法既然作用域与类方法等价,它是如何工作的?我使用mongoid作为数据库部分。

它之所以有效,是因为
CCD_ 1可以是CCD_ 2实例。

因此它可以接受Mymodel的所有作用域。

现在,ActiveRecord中作用域和类方法之间的实际区别(据我所知,Mongoid也是如此)是作用域必须返回一个关系。

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

最新更新