Rails 为route的路由约束提供了constraints 方法,具体的使用如下:
- 限制IP地址
constraints(:ip => /192.168.\d+.\d+/) do resources :posts end
可以提供一个ip或者一个ip地址的范围进行限制,一旦检测到用户的ip地址符合限制范围,则会告知不存在此route。
- 匹配动态请求
这个例子是控制route只能被iPhone访问。
1,第一种做法,传递block,如下:constraints(lambda { |req| req.env["HTTP_USER_AGENT"] =~ /iPhone/ }) do resources :iphones end
通过传入一个block的方式来匹配HTTP_USER_AGENT是否匹配iPhone,如果是true则可以访问iphones这个资源路径。
但是第一方法比较粗暴,代码不够整洁,如果逻辑复杂,就显得啰嗦,所以可以选择第二种方法
2,第二种做法,传递一个Class,并且在这Class必须实现matches? 方法。
我们事先在ib/constraints 定义一个Iphone Class:class Iphone def self.matches?(request) request.env["HTTP_USER_AGENT"] =~ /iPhone/ end end
接着在把第一方法的代码修改为:constraints(Iphone) do resources :iphones end
这样我们就可以把逻辑全部放在Iphone了
参考资料:
例子实现: https://gist.github.com/bsodmike/1369419
Rails Guide: http://guides.rubyonrails.org/routing.html#segment-constraints
同时如果你觉得在本文中介绍太简单,可以移步官方源码实现,并且附带有此api的详细guides:
相关推荐
[Ruby_on_Rails][API][Rails_5.x]__01._Rails_與_Web_API_介紹
使用Rails构建可伸缩和可维护API的最佳方法
Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...
rails文档 rails api 英文
rails帮助文档API
Ruby on Rails4 api.chm ruby on rails 4 最新api chm版本,方便大家阅览!
rails 2.1的api文档,chm格式,官方最新版
rails 2.2.2 API 英文的
ruby on rails 2.3.5 api,自己留着用的,如果有人不知道怎么生成的话可以下载我生成的这个
rails免费文档
ruby on rails api方便查阅
Api-rails5_api_tutorial.zip,了解如何在michael hartl的rails 5教程上构建一个现代api立即在rails应用程序中构建一个api!(Rails 5版本),一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web...
rails 3.2 API 用webzip抓下来的最新的
个人收藏的rails api
Rails Api基地 介绍 该项目的目标是: 一个讨论Rails设置和开发的api示例。 从其开始项目的基本模板。 规格摘要: RESTful API。 api版本。 Notes应用示例。 模式和良好做法。 用户管理。 版本到期。 国际...
这是关于rails 2.0 API文档,方便查询,是热爱rails人员的必备武器
rails的api文档,方便你查看
Rails3的ActiveRecord 查询API.doc
构建Perfect Rails 5 API Only应用得益于作为Rails 5核心一部分提供的新的rails-api gem,Rails现在是快速,轻松构建精简API的理想选择。 到目前为止,可以说,在Ruby中创建API的最佳选择是Grape,尽管Grape仍然是一...
学习ruby rails 的api手册