Where to put constraint classes in Rails project
convention-over-configur, naming-conventions, ruby-on-rails, ruby-on-rails-3, ruby-on-rails-3.2
Solution
`lib/` would be the appropriate place. If you want to make it cleaner, put it in `lib/constraint/authenticated.rb` and define your constraints like so
module Constraint
class Authenticated
def matches?(request)
# stuff
end
end
end
and in your `routes.rb`
constraints Constraint::Authenticated.new do
match 'account' => 'account#index'
end
Problem
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?