在编写ActiveRecord查询时,我们经常会用到`where.not`方法来排除特定条件的数据。然而,最近有一种更优雅的方法在开发者中受到关注,那就是使用排除(excluding)方法代替`where.not`。在本文中,我们将讨论为什么你应该考虑在ActiveRecord中使用排除代替`where.not`。

首先,让我们看一下`where.not`方法的问题。使用`where.not`需要手动指定要排除的条件,这样可能会导致查询语句变得繁琐和难以维护。另外,当条件较多时,`where.not`的链式调用可能会使代码变得冗长。这时候就需要考虑使用排除(excluding)方法。

排除(excluding)方法是Rails 7中引入的新特性,它可以让你更轻松地排除某些条件,而无需手动指定每个条件。通过简单地传入要排除的条件,你就可以快速得到想要的结果。这不仅让查询语句更加简洁,而且提高了代码的可读性和可维护性。

举一个例子来说明这两种方法之间的差异。假设我们有一个用户表,我们想要查询所有不是管理员并且未禁用的用户。如果使用`where.not`,我们可能会写出类似这样的代码:

“`ruby

User.where.not(role: ‘admin’).where.not(disabled: true)

“`

而如果我们使用排除(excluding)方法,代码会更加简洁:

“`ruby

User.excluding(role: ‘admin’, disabled: true)

“`

可以看到,使用排除(excluding)方法可以使代码更加简洁和易读。因此,为了提高开发效率和代码质量,我们建议在ActiveRecord查询中考虑使用排除(excluding)方法,而不是`where.not`方法。愿你的代码更加优雅和高效!

详情参考

了解更多有趣的事情:https://blog.ds3783.com/