只是对Rails的最佳实践感到好奇,我在其中放置了一个自定义约束类,该类别用作Config/Routes.rb中的约束。似乎Rails.root/lib
是所有用户类都去的地方。这适合这个吗?我应该为约束创建一个目录吗?现在存在2个空目录,assets
和tasks
。是否有会议?
lib/
将是适当的位置。如果您想使其更清洁,请将其放入lib/constraint/authenticated.rb
中,并定义您的约束,例如So
module Constraint
class Authenticated
def matches?(request)
# stuff
end
end
end
和您的routes.rb
constraints Constraint::Authenticated.new do
match 'account' => 'account#index'
end
这很奇怪,指南对该路径一无所知,但是 lib/constraints 甚至列出范围):
如果对于路线来说太复杂,则可以将此逻辑移至类中。此类必须具有在其上定义的
。matches?
方法,如果应授予用户访问该路线,则返回true,或者如果用户不应该访问该路由。class Iphone def self.matches?(request) request.env["HTTP_USER_AGENT"] =~ /iPhone/ end end
此代码的预期位置将是 lib/Constraints 。