在ActiveRecord中,多重选择是指在查询中使用多个条件来筛选记录。虽然这种方法可以实现所需的功能,但它可能会导致代码复杂且不易维护。以下是避免在ActiveRecord上使用多重选择的解决方法:
User.where(age: 18).where(status: 'active').order(created_at: :desc).limit(10)
class User < ApplicationRecord
scope :active_adults, -> { where(age: 18, status: 'active') }
end
User.active_adults.order(created_at: :desc).limit(10)
class UserQuery
def initialize(relation = User.all)
@relation = relation
end
def active_adults
@relation.where(age: 18, status: 'active')
end
end
UserQuery.new.active_adults.order(created_at: :desc).limit(10)
通过使用链式查询方法、命名范围或查询对象,可以避免在ActiveRecord上使用多重选择,使代码更加清晰、可读和可维护。