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)