一个简单的示例,这实际上不是我想要做的:
我在一个用户模型上有两个范围:
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 }
真的很管用。