|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
学习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, |
|