在Active Record中,可以使用scope
方法定义静态过滤选项,它可以在查询中预定义一组条件。以下是一个示例:
class User < ApplicationRecord
scope :active, -> { where(active: true) }
scope :admin, -> { where(role: 'admin') }
scope :recent, -> { order(created_at: :desc).limit(10) }
end
在上面的示例中,User
模型定义了三个静态过滤选项:active
、admin
和recent
。这些选项可以在查询中直接使用,例如:
# 获取所有活跃用户
active_users = User.active
# 获取所有管理员用户
admin_users = User.admin
# 获取最近创建的10个用户
recent_users = User.recent
也可以将多个过滤选项组合在一起使用:
# 获取所有活跃的管理员用户
active_admin_users = User.active.admin
# 获取最近创建的10个活跃管理员用户
recent_active_admin_users = User.active.admin.recent
这样,在查询数据时,可以方便地重用这些静态过滤选项,使代码更加简洁和可读。