これが私が持っているものです
現在、私はこれをやっています:
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]) }
しかし、異なる送信呼び出しを 1 行に追加する方法はありますか?