我有一个具有一组复杂范围的现有模型:
scope :test1 , where(gift: true)
scope :test2 , lambda {|time| where("last_created_at > ?", time)}
scope :test3 , where(approved: true)
我可以做类似的事情
User.test1.test2.test3.all
现在,假设我想为此附加一个全局 OR 范围。即选择所有这些(test1 + test2 +test)或者当用户是管理员时(当然不是工作代码):
scope :admin , where("OR admin=", true)
有没有办法在现有范围内做到这一点,或者这是否需要使用 AREL 或普通 SQL 进行全新的重写?
我为此发现的一个技巧是:
scope :admin , where("1=1) OR admin=1 AND (1=1", true)
但是,我的意思是,这会比这更丑吗.. :)