Rails - 限制模型创建的速率

时间:2010-11-02 23:59:07

标签: ruby-on-rails ruby-on-rails-3

我正在寻找是否有一种聪明的方法来做以下事情......

在我的应用程序中,我有项目。我想阻止用户添加10个以上的项目。我在使用导轨几周之后的理解是,我应该在我的模型中为此做一个帮助,这听起来不错吗?

我也应该在模型/帮助程序级别执行此操作,还是应该对具有某种类型的设置文件的所有模型执行此操作?

所以这个想法是,当用户去创建一个新项目时,before_create会检查,如果用户已经有10个以上的项目,那么,对不起,此时此刻不好意思?另外,对如何输出错误消息感兴趣,但对新手来说一次只有1步。

感谢

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

这不是一个完全防弹的方法,因为在检查计数和实际创建项目的时间间隔内,某人可能能够创建项目的可能性非常小。例如,当有人双击表单提交按钮时,这种情况发生的可能性要大得多,但实际上相对较少。