只是对 Rails 的最佳实践感到好奇,我在其中放置了一个自定义约束类,该类用作 config/routes.rb 中的约束。似乎Rails.root/lib
是所有用户类的去处。这适合这个吗?我应该在里面为约束创建一个目录吗?现在存在 2 个空目录,assets
并且tasks
. 有这方面的约定吗?
问问题
4951 次
2 回答
21
lib/
将是合适的地方。如果你想让它更干净,把它放进去lib/constraint/authenticated.rb
并像这样定义你的约束
module Constraint
class Authenticated
def matches?(request)
# stuff
end
end
end
在你的routes.rb
constraints Constraint::Authenticated.new do
match 'account' => 'account#index'
end
于 2012-10-23T19:00:02.457 回答
11
奇怪的是,该指南没有提及该路径,但lib/constraints甚至列在 API 中(ActionDispatch::Routing::Mapper::Scoping):
如果路由过于复杂,您可以将此逻辑移出到一个类中。这个类必须
matches?
定义一个方法,如果用户应该有权访问该路由,则返回 true,否则返回 false。class Iphone def self.matches?(request) request.env["HTTP_USER_AGENT"] =~ /iPhone/ end end
此代码的预期位置是lib/constraints。
于 2013-05-23T16:47:49.943 回答