我正在寻找是否有一种聪明的方法来做以下事情......
在我的应用程序中,我有项目。我想阻止用户添加10个以上的项目。我在使用导轨几周之后的理解是,我应该在我的模型中为此做一个帮助,这听起来不错吗?
我也应该在模型/帮助程序级别执行此操作,还是应该对具有某种类型的设置文件的所有模型执行此操作?
所以这个想法是,当用户去创建一个新项目时,before_create会检查,如果用户已经有10个以上的项目,那么,对不起,此时此刻不好意思?另外,对如何输出错误消息感兴趣,但对新手来说一次只有1步。
感谢
答案 0 :(得分:3)
将此作为验证方法非常简单。在Rails 3中,您只需声明一个在验证期间运行的方法,如果出现这种情况,它有机会添加错误:
class Project
validate :user_can_create_projects
protected
def user_can_create_projects
if (user and user.projects.count >= 10)
errors.add_to_base("You have created too many projects.")
end
end
end
这不是一个完全防弹的方法,因为在检查计数和实际创建项目的时间间隔内,某人可能能够创建项目的可能性非常小。例如,当有人双击表单提交按钮时,这种情况发生的可能性要大得多,但实际上相对较少。