我正在使用Symfony2,Doctrine2和Postgresql构建SaaS项目。我有三种不同的订阅计划,每个计划都有每个用户可以存储的成员限制。
如何限制用户不存储允许其订阅计划的更多成员?我是否应该使用预先存在的事件,计算属于她的记录数量,如果记录过多则取消操作?或者这应该在模型中还是在控制器中?
答案 0 :(得分:3)
我最近不得不为shouttag.com构建相同类型的功能,用户只能根据当前的计费方案注册X个shouttags。当然,我正在使用Symfony / Doctrine 1.x,但方法应该是相同的。将逻辑放在模型层中,并且每当用户尝试链接新成员时(例如通过表单保存),发出用户当前订阅计划的查询,以及他们当前有多少成员,如果结果数字是> =他们的允许限制,然后他们无法添加更多成员,直到他们更改订阅计划。
作为一个总体设计目标,您希望保持控制器的精益,并将大部分逻辑放入模型中(瘦小的控制器,胖模型),这样逻辑就可以在整个代码库中的其他地方共享。 / p>