我们可以编写一个类方法,而不是命名范围或范围。
前任:
def self.desc
<code>
end
为什么我们要使用范围?
您可以使用这两种方法。但是通过方法,当您的范围代码增长时,它会更具可读性。
我们当然可以编写像作用域一样工作的类方法。当我们没有 arel 可玩时,它们也有点像 Rails 2.x 的遗留物。
对我来说,范围是一种像关联一样“定义”模型的方式。作用域使定义这些东西变得更好、更清晰,它们通常位于顶部,因此您可以一目了然地看到模型。
我发现当我需要开始传递参数时,我倾向于使用类方法。是的,有一种方法可以做到这一点,但实际上你开始需要一个类方法(特别是如果有可选参数,尽管我相信 Ruby 1.9 在某种程度上解决了这个问题)