来看Rails开辟细节(三)Participating in the Monitoring Process
学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解ParticipatingintheMonitoringProcess
介入监控历程
ActiveRecord把持着model对象的性命周期,它创立它们,在修正,保留和更新的时分监控它们,而且在删除的时分也举行监控。利用回调函数,ActiveRecord同意我们的代码介入这个监控历程。
ActiveRecord统共界说了20个回调函数。18个成对的before和after,另有两个破例:after_find和after_initialize。
完成callback有两种体例。
第一种,间接在对象的回调办法中写代码。
classOrder
<ActiveRecord::Base
defafter_save
self.payment_due||=Time.now+30.days
end
end第二种,为回调声明一个处置器,处置器能够是一个办法,大概是一个block。
classOrder<ActiveRecord::Base
before_validation:normalize_credit_card_number
after_createdo|order|
logger.info"Order#{order.id}created"
end
protected
defnormalize_credit_card_number
self.cc_number.gsub!(/[-s]/,)
end
end你能够为一个回调函数指定多个处置程序,多个处置程序会依照指定的按次实行,除非个中一个处置程序前往false,这时候候才会停止前面的处置程序。
由于必要优化功能,界说after_find和after_initialize只能用办法的体例,假如利用其他体例,界说的处置程序会被疏忽。
GroupingRelatedCallbacksTogether
callback分组
能够将相干的callback处置办法界说在独自的类中,如许这些处置办法就能够在多个model中共享。一个处置类就是在一个类中界说回调办法,把这些类放在app/models文件夹中。
classCreditCardCallbacks
defbefore_validation(model)
model.cc_number.gsub!(/[-s]/,)
end
end
classOrder<ActiveRecord::Base
before_validationCreditCardCallbacks.new
end
classSubscription<ActiveRecord::Base
before_validationCreditCardCallbacks.new
end下面的CreditCardCallbacks的before_validation就是共享的,这必要Order和Subscription都包括cc_number属性。共享的处置程序,必要处置不异的属性,一定必要共享处置程序的model有不异称号的属性。
<p>
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak, 是一种使用者不需花费很多时间学习的语言 是一种为 Internet发展的计算机语言 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 Java 编程语言的风格十分接近C、C++语言。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
页:
[1]