Я не уверен, в чем конкретно проблема, но следующий способ гораздо более эффективен для выполнения той же вещи:
class ValidDayOfWeek
VALID_DAYS = %w[all today tomorrow sunday monday tuesday wednesday thursday friday saturday]
def self.matches?(request)
VALID_DAYS.include? request.params[:day_of_week]
end
end
get ':/post_type(/:day_of_week)' => 'posts#index', :constraints => ValidDayOfWeek
Самое большое отличие состоит в том, что это позволяет избежать инициализации нового объекта ValidDayOfWeek при каждом запросе. В руководстве по Rails приведен пример, в котором может каждый раз хотеть новый объект (обновление черного списка в реальном времени), но это вводит в заблуждение для случаев, подобных вашему.
Кроме того, вы получили немного многословно в своем методе matches?
- нет необходимости в явном возврате или условном выражении, так как includes?
вернет либо true, либо false как есть.