2015-02-09 19 views
0

以下是這種情況:Rails:如何處理after_create:create_subscription?

當用戶創建主題時,他們可以選擇是否對該主題使用subscribe。 如果訂閱,那麼當其他用戶回覆他們的主題時,他們會收到通知。

我認爲有兩種方法可以做到這一點。

  1. 在型號topic.rbafter_create

當用戶決定不訂閱他們的話題,我們逃離這個方法。

在控制器 TopicsController
  • create
  • 類似if params[‘subscribe’]從提交表單用戶。

    我認爲after_create感覺更多的結構,但把它放在模型中似乎太深了。

    什麼是處理此功能的好方法?

    回答

    2

    雖然一般來說「胖模型,瘦身控制器」是一個很好的經驗法則,但對於沒有經驗的開發人員來說,這並不足夠。

    真正的規則應該是「代碼應該位於代碼所屬的位置」。如果訂閱依賴於用戶輸入,則它不一定屬於主題模型。

    有時將過程打包到您的控制器可以調用的service object中是有意義的。它會接受您的輸入,執行一些操作,包括適當地更新一個或多個模型,然後返回結果。

    https://netguru.co/blog/service-objects-in-rails-will-help

    0

    我認爲this answer可以幫助你

    控制器是最擅長解析輸入,調用相應的模型,然後格式化輸出。

    一般而言,您可能想查看「胖模型,瘦身控制器」的主題。