2012-08-01 62 views
1

目前我有幾個類,每個類都處理不同的網站。它們的行爲類似於同一類型,因爲它們都具有方法crawl_item()在幾個類中的一種方法中捕獲異常的好方法

class CrawlA 
    def crawl_item 
    ... 
    A.create() 
    end 
end 

class CrawlB 
    def crawl_item 
    B.create() 
    end 
end 

現在,我要趕在調用這些crawl_item methods當一個模型驗證異常,並執行相同的救護行動。什麼是實施這個的好方法?

+0

我想我們可以假設,方法'crawl_item'每個班級不同,不是嗎? – tokland 2012-08-01 12:45:15

+0

@tokland是的,他們爬行,但實現是非常不同的 – lulalala 2012-08-03 01:44:35

回答

3

保持乾燥,你可以編寫採用經典混合式結構的包裝(模塊+類包括):

module CrawlValidator 
    def with_validations 
    begin 
     yield 
    rescue => exc 
     ... 
    end 
    end 
end 

class CrawlA 
    include CrawlValidator 

    def crawl_item 
    with_validations { A.create } 
    end 
end 
相關問題