Rails的型号范围链接基于动态范围名单上

问题描述:

比方说,我有一些模型Rails的型号范围链接基于动态范围名单上

class MyModel < ApplicationRecord 
    scope :opened, -> { where(status: 'open') } 
    scope :closed, -> { where(status: 'closed') } 
    scope :colored, -> { where.not(color: nil) } 
    # etc 
end 

我可以打电话范围连锁店如

MyModel.opened.colored 
MyModel.send('opened').send('colored') 

但我怎么可以让范围链接基于动态范围令牌列表?我的意思是

scopes = ['opened', 'colored', ...] 

列表可能会很长,我需要一些通用的解决方案做尽可能的简单,就像MyModel.send_list(scopes)

更多作为的范围因此,您可以添加喜欢,

scope :send_list, -> (*scopes) { scopes.inject(self) { |out, scope| out.send(scope) } } 

发送此类似YourModel.send_list(*scopes)