Rails:如何处理after_create:create_subscription?

时间:2015-02-09 08:57:41

标签: ruby-on-rails

情况如下:

当用户创建主题时,他们可以选择是否subscribe到此主题。 如果订阅,那么当其他用户回复他们的主题时,他们会收到通知。

我认为有两种方法可以做到。

    模型after_create 中的
  1. topic.rb

    当用户决定不订阅他们的主题时,我们会逃避这种方法。

      控制器create 中的
    1. TopicsController

      来自用户提交的表单中的if params[‘subscribe’]

      我认为after_create感觉更具结构性,但把它放在模型中似乎太深了。

      处理此功能的好方法是什么?

2 个答案:

答案 0 :(得分:2)

虽然一般"胖模型,瘦瘦的控制器"这是一个很好的经验法则,对于没有经验的开发人员而言,它实际上就是那些不足以推动模型的人。

真正的规则应该是"代码应该位于代码所属的位置"。如果订阅取决于用户输入,则它不一定属于主题模型。

有时将进程打包到控制器可以调用的service object中是有意义的。它将接受您的输入,执行一些操作,包括根据需要更新一个或多个模型,并返回结果。

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

答案 1 :(得分:0)

我认为this answer可以帮助你

  

控制器最擅长解析输入,调用适当的模型,然后格式化输出。

一般来说,您可能想查看“胖模型,瘦控制器”的主题。