1

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

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

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

为了方便和干燥,我想要一个名为 :awake 的范围,它是用 stabby lambda 表示法编写的 User.unarchived.active 的组合。 注意,我知道我可以写这样的东西:

def self.awake
  self.unarchived.active
end

我想知道在 lambda 范围定义中这是否以及如何实现,如果没有,我将不胜感激解释或链接为什么它不是。

4

1 回答 1

1

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

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

甚至更简单,如下所述:

scope :awake, -> { unarchived.active }

成功了。

于 2020-02-22T15:43:13.733 回答