這與許多可能的答案一個複雜的問題,所以我將我的處境分解成簡單的要點,以幫助縮小解決方案:什麼時候適合在Rails應用程序中使用自定義類?
我的Rails應用程序具有以下「對象」
- 作者
- 飼料
- 更新
- FeedTypes
的對象是相關的,像這樣:
- 作者可以有1個或多個飼料
- Feed可以有一個或多個更新
- 的進料具有一個的FeedType
實施例設置:
- 作者:Levi Hack與
- 飼料:查看源代碼:http://www.twitter.com/statuses/user_timeline/opnsrce.xml
- 的FeedType:Twitter的
- 更新:
問題:
飼料
我的問題,我的問題,內部的微博
我需要解析上面提到的feed並存儲每個twee t在updates
表中。爲了解析飼料,我想編寫一個自定義Feed
類將被TwitterFeed
得到繼承,FacebookFeed
,TumblrFeed
等
然而,我不知道這是否是解決這類的「最佳實踐」的問題。
問題:
- 什麼時候適合開發自定義的類來執行RoR中的一項行動(而不是通過模型或控制器去)?
- 如果這種情況不需要自定義類,我應該使用哪個元素解析邏輯?模型還是控制器?
- 如果這是一個自定義類的適當情況,我應該在哪裏存儲它(換句話說,什麼是正確的'約定')?
如何在Feed模型中使用「loadUpdates」或「parse」方法?那是合法的嗎?我問,因爲無論何時加載主頁面,給定提要的所有更新都將被刪除,然後重新插入,無論它們是多麼新。 – 2010-09-06 01:13:50
你真的想讓用戶等待代碼提取feed(可能或不可用),解析它並呈現它嗎?這可能需要幾秒鐘的時間。恕我直言,更好的方法是每5分鐘調用一次任務(或者更常見的是,如果你想保持新鮮的Feed,但會消耗更多的CPU和帶寬)。 'loadUpdates'符合,它可以在'Feed'中,因爲這是所有提要共享的東西。但是,您應該使用lowercased_and_underscored而不是..即。 'load_updates'。這是方法名稱的ruby命名約定。 – randomguy 2010-09-06 10:46:53
如果您仍然喜歡在用戶加載主頁面時更新,那麼只需從主頁面操作中調用'load_updates'即可。因爲你不訪問這些數據,所以你不需要更新表。從'load_updates'返回一組更新。 – randomguy 2010-09-06 10:51:28