@metrics = Metric.all
@metrics = @metrics.where('current_ratio > ?', @screen.current_ration_min) if @screen.current_ratio_min.present?
@metrics = @metrics.where('other_value > ?', @screen.other_value) if @screen.other_value.present?
This is the best way I can think of without programmatically building a where clause string which can be risky for SQL injection.
Keep adding as many conditions as you want. Notable, use if something.present? instead of your unless something.nil?
Also, the Metric.all might not be ideal, but whatever you need to get all records to start with.