2014-02-20 4 views
0

По каким-то причинам я хочу ограничить общее количество пользователей Devise, новый пользователь не сохранит, если больше этого числа.Rails Как я могу ограничить общее количество пользователей Devise?

Но я не знаю, как это сделать, я не видел никакого контента об этом в Devise doc.

Может ли кто-нибудь мне помочь? Благодарю.

+0

Но вы можете объяснить разницу между этим двумя ответами? – user3087000

+0

Несомненно. Это проблема проверки модели для ваших пользователей Devise, поэтому установка этой логики заключается в том, что контроллер не следует за Model-View-Controller. – wurde

+0

И использование Rails, созданного вокруг MVC. – wurde

ответ

0

Реализация этого в рамках модели является более подходящим, то ваш контроллер.
Ниже приведен пример этого:

class Moderator < ActiveRecord::Base 
    before_create :check_moderator_limit 

    private 
    devise :database_authenticatable, 
      :trackable, 
      :validatable, 
      :timeoutable, 
      :registerable 

    def check_moderator_limit 
    if Moderator.count > 3 
     return false 
    end 
    true 
    end 
end 
+0

Да, но можете ли вы настроить ошибку, отображаемую пользователю, когда вы делаете это в модели? –

+0

Несомненно, подумайте об этом как о специальной проверке. – wurde

+0

Я не думал об этом, поэтому да, тогда вы должны сделать это в модели. –

0

Вы можете изменить контроллер регистрации разработки, чтобы подсчитать количество пользователей в своем db перед сохранением пользователя, или вы могли бы добавить перед созданием обратного вызова в своей модели пользователя, чтобы сделать то же самое.

Однако при этом в пользовательской модели пользователь получит ошибку, которую вы не можете изменить.

Если вы сделаете это в своем контроллере регистрации пользовательских настроек, вы можете настроить ошибку и как приложение обрабатывает ее.

Customize Devise Controller

+0

Но как я могу видеть этот контроллер? – user3087000

+0

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

+0

Избегайте применения ограничений на модели в контроллерах. – wurde

Смежные вопросы