2013-05-10 76 views
1

我是新的RoR,我似乎無法掌握如何構建我的應用程序。使用第三方API的rails應用程序的結構

我有一款應用程序可以使用garb從Google Analytics中提取數據。在對數據進行一些數字處理之後,應用程序將填充Report模型並向用戶顯示報告。

現在,我正在使用關注點分離Google Analytics邏輯。在我的問題文件夾中,我有一個負責提取數據的GoogleAnalytics模塊。 Report型號包括GoogleAnalytics模塊。在Report模型發生數字處理之前,我需要清理並重新格式化數據。這應該是GoogleAnalytics模塊的責任,或者可能是幫手?

包含第三方服務是否有更好的做法?

回答

1

無論負責從Google Analytics獲取數據,都需要重新格式化。您的其他應用程序都不需要知道Google Analytics如何返回其數據的格式 - 該模塊應該將其轉換爲合理的標準界面,並將其他所有人隱藏起來。

我也強烈地考慮把這些東西放到服務對象而不是模塊中。包含模塊會因爲您在對象上調用某個方法而變得混亂,而您不知道該方法在哪裏定義。我只會使用這種模式,如果你在很多其他模型中包含相同的模塊,並且它是真正的DRY播放。

服務對象看起來會是(這取決於PARAMS你需要使用提取數據),如:

class GoogleAnalyticsDataFetcher 

    attr_accessor :data 

    def new ga_id 
    @ga_id = ga_id 
    end 

    def fetch 
    @data = do_some_stuff 
    end 

end 

,然後你可以把它從您的控制器或包起來裏面的Report模型在某處。然後,當你去GoogleAnalyticsDataFetcher.new(id).fetch這是非常明顯的是什麼正在發生和它的定義。