我有2个型号:用户,员工。 User has_one :employee
,员工belongs_to :user
在我的应用中:
所以 - 当创建员工时,我需要检查是否有相同电子邮件的用户
这样做的代码很简单。但我想知道它应该在应用程序结构中的哪个位置:
after_create
方法)中完成 - 但我必须在Employee模型中引用用户模型(这是正确的)吗?user_service
方法创建一个名为create_user_for_employee(employee)
的额外类(即在服务文件夹中) - 并在我的employee_controller中的create action中调用它哪种解决方案最好?还是有另一个 - 更好?是"服务"具有此类的文件夹的正确名称?我假设当应用程序增长时,我将需要更多的类和方法....
答案 0 :(得分:1)
Rails中的服务有几个原因可以引入。其中一个很好地匹配您的用例 - 当您需要实现的操作与多个模型相关时,使用服务。
由于您的操作与User
有关,因此Employee
服务肯定是您的选择。
是的,services
是该文件夹的一个好名字。是的,当您的应用程序增长时,您最终可能会使用MVC模式中的许多类,例如服务,装饰器,表单等。
请随时查看7 Patterns to Refactor Fat ActiveRecord Models以便进一步阅读。那篇文章是一种规范的。