Rails - ограничение скорости создания модели - PullRequest
0 голосов
/ 03 ноября 2010

Я смотрю, есть ли умный способ сделать что-то вроде следующего ...

В моем приложении есть проекты.Я хочу запретить пользователю добавлять более 10 проектов.Я понимаю, что после того, как я использовал рельсы только в течение нескольких недель, я должен сделать помощника в моей модели для этого, это звучит правильно?

Также я должен сделать это на уровне модели / помощника или эточто-то, что должно быть сделано для всех моделей с каким-либо типом установочного файла?

Таким образом, идея состоит в том, что, когда пользователь собирается создать новый проект, before_create, он проверяет, есть ли у пользователя более 10 проектов,это говорит, извините, не в это время?Кроме того, интересует, как вывести сообщение об ошибке, но по 1 шагу для новичка.

спасибо

1 Ответ

3 голосов
/ 03 ноября 2010

Выполнить это как метод проверки довольно просто.В 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

Это не полностью пуленепробиваемый метод, так как очень маленькийвероятность того, что кто-то сможет создать проект между интервалом, когда вы проверяете счетчик, и когда вы фактически создаете проект.Подобные вещи имеют гораздо больше шансов, например, когда кто-то дважды щелкнет по кнопке отправки формы, но на практике это происходит довольно редко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...