如何编写stabby lambda包装作用域,它是其他作用域名称的组合



一个简单的示例,这实际上不是我想要做的:

我在一个用户模型上有两个范围:

scope :unarchived, -> { where archived: false }
scope :active, -> { where active: true }

为了方便和简洁,我想要一个名为:wake的作用域,它是用stabby-lambda表示法编写的User.unarchived.active的组合。注意,我知道我可以写这样的东西:

def self.awake
self.unarchived.active
end

我想知道在lambda作用域定义中这是否可能以及如何可能,如果不可能,我希望能给出解释或链接,说明为什么不可能。

我刚刚意识到,这是直截了当的。我只需要注意,lambda中有一个表达式,它返回一个查询/条件对象。简单地写:

scope :awake, -> { self.unarchived.active }

或者更简单,如下所述:

scope :awake, -> { unarchived.active }

真的很管用。

最新更新