这是我所拥有的
目前,我正在这样做:
current_account.send(object).search(params[:search]).user_id_equals_any(users).visibility_is_any(visibilities)
但那不是很灵活?如果我想有条件地不拥有这些范围之一怎么办?
我认为具有条件添加元素的范围数组将是一个很好的解决方案
我将使用 .send() 调用的参数数组
scopes = []
scopes = << [:user_id_equals_any, users] if filter_users
scopes = << [:visibility_is_any, visibilities] if filter_visibility
所以,我可以有一些未知的数字范围。
要执行范围,我需要调用.send(:scope_name, scope_param)
但是我如何为我的scopes
阵列中的任意数量的范围做到这一点?
作为一个循环,我认为它会像
result = current_account.send(object).search(params[:search])
scopes.each do |scope|
result.send(scope[0], scope[1])
end
return result
循环可以简化为
scopes.each {|s| result.send(s[0], s[1]) }
但是有没有办法在一行中附加不同的发送调用?