[英]callbacks and filters in ruby on rails 4.01
我从最近2-3个月开始学习rails,我遇到了一些rails的概念。 回调和过滤器是我不清楚的概念。 我也读过很多相同的文件,但我真的很困惑。 有人请清除我的怀疑。
过滤器与Rails中的回调
过滤器:过滤器是在控制器操作之前,之后或“周围”运行的方法
before_action在请求到达控制器的操作之前对请求运行过滤器之前例如:在授予用户访问权限之前验证用户的身份验证
after_action在操作完成后运行过滤器。
around_action过滤器可能在运行操作之前和之后具有逻辑。 您可以使用周围的过滤器进行异常处理,设置和拆卸以及无数其他情况。
回调 :回调允许您在模型中更改对象状态之前或之后触发逻辑。
可以编写将在从数据库创建,保存,更新,删除,验证或加载Active Record对象时运行的代码。
创建一个对象
before_validation
after_validation
before_save
around_save
before_create
around_create
after_create
after_save
after_commit/after_rollback
更新对象
before_validation
after_validation
before_save
around_save
before_update
around_update
after_update
after_save
after_commit/after_rollback
摧毁一个物体
before_destroy
around_destroy
after_destroy
after_commit/after_rollback
回调是在操作对象时运行的钩子。 例如,如果您定义
class Foo < ActiveRecord::Base
after_create :do_something
def so_something
Rails.logger.error "I do something"
end
end
当创建foo
对象时,这将在日志中显示一条消息。
过滤器是一组关于条件的对象。 例如 :
Foo.where(:name => "Bar")
只会选择名为"Bar"
foo
对象。 如果多次使用过滤器,则可以在模型中声明特定范围:
class Foo
scope :bar, -> { where(:name => "Bar") }
end
Foo.bar # equivalent to previous line
或者更有趣:
class Foo
scope :having_name, -> (n) { where(:name => n })
end
Foo.having_name("Bar") # equivalent too !
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.