Just curious about the best practices for Rails in where I put a custom constraints class that's used as a constraint in config/routes.rb. Seems like Rails.root/lib
is where all user classes go. Is that appropriate for this? Should I be creating a directory inside for constraints? 2 empty directories exist there now, assets
and tasks
. Are there conventions for this?
Where to put constraint classes in Rails project
5.5k Views Asked by at. At
2
There are 2 best solutions below
2

This is strange that the guide says nothing about that path, but lib/constraints is even listed in the API (ActionDispatch::Routing::Mapper::Scoping):
You are able to move this logic out into a class if it is too complex for routes. This class must have a
matches?
method defined on it which either returns true if the user should be given access to that route, or false if the user should not.class Iphone def self.matches?(request) request.env["HTTP_USER_AGENT"] =~ /iPhone/ end end
An expected place for this code would be lib/constraints.
lib/
would be the appropriate place. If you want to make it cleaner, put it inlib/constraint/authenticated.rb
and define your constraints like soand in your
routes.rb