






























顧名思義,Service Object是因為有某些類似的特定功能,像是一個『service』,跟資料庫中的model並無直接關係,因此拉出來獨立成為一個class,在邏輯上會更容易管理。不過在文章中有定義了幾個需要使用service object的情況:
以登入機制為範例,將登入的authenticate功能另外放在UserAuthenticator這個class當中,非常簡單的一個介紹。但通常在實作中會遇到的情況都複雜許多:
實作規格:
聽起來就需要非常多分門別類的功能,但應該不難看出,這些功能幾乎都是使用外部服務,包括gem ‘jbuilder’ (https://github.com/rails/jbuilder)、gem ‘axlsx’ (https://github.com%20/randym/axlsx)、gem ‘prawn’ (https://github.com/prawnpdf/prawn)、gem ‘gruff’ (https://github.com/topfunky/gruff) 四個都是不需要自己土法煉鋼的功能,而是直接使用gem安裝以後,就可以將格式輸出了。
因此,這些內容都是專門處理『輸出』(render)的部份,可以將他們收攏為一個service object,管理比較方便。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。