我在一个项目中工作,我遇到了一个我不知道的范围使用。我有两个定义:
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
也是如此)是作用域必须返回一个关系。
这样使用关系和范围没有问题,实际上这是非常合乎逻辑的,也是我们通常使用它们的方式。