Ruby on rails 3 如何在rails 3中应用http_referer约束?
我想在routes.rb中对使用http\u referer的路由应用约束我该怎么做Ruby on rails 3 如何在rails 3中应用http_referer约束?,ruby-on-rails-3,Ruby On Rails 3,我想在routes.rb中对使用http\u referer的路由应用约束我该怎么做 谢谢据我所知,你可以用两种方法中的一种来做 更简单,但控制更少: #config/routes.rb resources :waffles, :constraints => {:referer => 'http://wafflesarerad.com'} 更多控制: #config/routes.rb require 'referer_constraint' constraints (Refere
谢谢据我所知,你可以用两种方法中的一种来做 更简单,但控制更少:
#config/routes.rb
resources :waffles, :constraints => {:referer => 'http://wafflesarerad.com'}
更多控制:
#config/routes.rb
require 'referer_constraint'
constraints (RefererConstraint) do
resources :waffles
end
#lib/referer_constraint.rb
class RefererConstraint
def self.matches?(request)
request.referer = 'http://wafflesarerad.com' ? true :false
end
end
您可以使用routes.rb中的
:constraints=>
散列来连接请求的任何部分。您还可以对实现类级方法matches?(request)
的自定义约束类设置权限。对于是否满足约束,该方法应该返回true/false。为了改进Patrick的答案,我建议
- 将constraint类放置在app/constraints/而不是lib/中,Rails将自动拾取它,您无需在routes文件的顶部粘贴require语句
- 不必要地使用三元(?:)运算符
#config/routes.rb
constraints (RefererConstraint) do
resources :waffles
end
#app/constraints/referer_constraint.rb
class RefererConstraint
def self.matches?(request)
request.referer == 'http://wafflesarerad.com'
end
end
谢谢,这解决了我的问题。如何知道约束哈希的可能值?