2013-04-23 53 views
25

簡短版本:何時應該將某些內容放入應用程序/服務而不是放入lib /中。Rails服務對象vs lib類

最近我一直在關注服務對象的路線,但是我意識到有時候我不能真正決定天氣我應該將某些東西提取到服務對象中(我在app/services中)或者到一個類中在我的lib文件夾中。

我通常會尋找的一件事是,如果類需要訪問params或其他控制器特定的東西(即作爲初始化器中的參數),那麼我傾向於將其放入服務中。

這裏的約定是什麼?證明(鏈接)會很好:)

回答

52

這是我傾向於認爲有關代碼進去lib/

  • 它不連接到我的應用程序的域模型。
  • 它可以在其他項目上重複使用。
  • 它可能會成爲它自己的寶石。因此,把它放在lib/是朝這個方向邁出的第一步。

服務:

  • 他們往往知道的領域模型的內部工作像樣的數目。
  • 在我的應用程序中執行特定於業務域的工作。
  • 趨於耦合到特定的模型。
+0

因爲你在那裏放了很好的例子,我會接受這個。謝謝。 – mrbrdo 2013-04-24 13:23:15

2

IMO,服務是您的域的抽象。 Lib的東西是爲了方便課程,其他的東西不直接與你的模型有關。