before“过滤器”的通常用法是在尝试一个“动作”之前确认是否遇到某些条件。Rails
确认机制是一个抽取动作,它可帮助你比使用“过滤器”代码更简明地表述前置条件。
例如,我们可能请求“会话”在我们的博客允许写评论前包含一个有效的用户。我们可
以使用一个确认来表示这种思想,如
class BlogController < ApplicationController
verify :only => :post_comment,
:session => :user_id,
:add_flash => { :note => "You must log in to comment"},
:redirect_to => :index
# ...
这个声明应用确认给post_comment“动作”。如果“会话”没有包含key 键:user_id,
则一个通知被添加给flash 并重定向请求给index“动作”。校验的参数可以分写成三个部
分。
Applicability
这些选项选择哪个“动作”被应用确认。
1、:only =>:name or [ :name, ... ] 只确认列出的“动作”。
2、:except =>:name or [ :name, ... ] 确认除了列出的所有“动作”。
Tests
这些选项描述在请求上完成的测试。如果给出多个选项,那么所有确认必须成功才能返
回true。
1、:flash =>:key or [ :key, ... ] flash 必须包含给定的key 键。
2、:method =>:symbol or [ :symbol, ... ] 请求方法(:get, :post,
:head, 或:delete) 必须匹配一个给出的符号。
3、:params =>:key or [ :key, ... ] 请求参数必须包含给出的key 键。
4、:session =>:key or [ :key, ... ] “会话”必须包含给出的key 键。
Actions
这些选项描述在一个确认失败后应该发生什么。如果没有“动作”被指定,则确认返回
一个空的失败“应答”给浏览器。
1、:add_flash =>hash 把给出的哈希表key/value 对并入到flash 中。这可以用于生成
错误“应答”给用户。
2、:redirect_to =>params 使用给出的哈希表参数重定向。
确认机制是一个抽取动作,它可帮助你比使用“过滤器”代码更简明地表述前置条件。
例如,我们可能请求“会话”在我们的博客允许写评论前包含一个有效的用户。我们可
以使用一个确认来表示这种思想,如
class BlogController < ApplicationController
verify :only => :post_comment,
:session => :user_id,
:add_flash => { :note => "You must log in to comment"},
:redirect_to => :index
# ...
这个声明应用确认给post_comment“动作”。如果“会话”没有包含key 键:user_id,
则一个通知被添加给flash 并重定向请求给index“动作”。校验的参数可以分写成三个部
分。
Applicability
这些选项选择哪个“动作”被应用确认。
1、:only =>:name or [ :name, ... ] 只确认列出的“动作”。
2、:except =>:name or [ :name, ... ] 确认除了列出的所有“动作”。
Tests
这些选项描述在请求上完成的测试。如果给出多个选项,那么所有确认必须成功才能返
回true。
1、:flash =>:key or [ :key, ... ] flash 必须包含给定的key 键。
2、:method =>:symbol or [ :symbol, ... ] 请求方法(:get, :post,
:head, 或:delete) 必须匹配一个给出的符号。
3、:params =>:key or [ :key, ... ] 请求参数必须包含给出的key 键。
4、:session =>:key or [ :key, ... ] “会话”必须包含给出的key 键。
Actions
这些选项描述在一个确认失败后应该发生什么。如果没有“动作”被指定,则确认返回
一个空的失败“应答”给浏览器。
1、:add_flash =>hash 把给出的哈希表key/value 对并入到flash 中。这可以用于生成
错误“应答”给用户。
2、:redirect_to =>params 使用给出的哈希表参数重定向。