Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails如何限制Desive用户的总数?_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails如何限制Desive用户的总数?

Ruby on rails Rails如何限制Desive用户的总数?,ruby-on-rails,Ruby On Rails,出于某些原因,我想限制Desive用户的总数,新用户在大于此数字时不会保存 但我不知道怎么做,我在Desive doc中没有看到任何关于它的内容 有人能帮我吗?谢谢。在保存用户之前,您可以修改Desive registration controller以计算数据库中的用户数,也可以在用户模型中添加创建前回调以执行相同操作 但是,在用户模型中执行此操作会给用户带来无法修改的错误 如果在自定义Desive注册控制器中执行此操作,则可以自定义错误以及应用程序处理错误的方式 在您的模型中实现这一点比您的

出于某些原因,我想限制Desive用户的总数,新用户在大于此数字时不会保存

但我不知道怎么做,我在Desive doc中没有看到任何关于它的内容


有人能帮我吗?谢谢。

在保存用户之前,您可以修改Desive registration controller以计算数据库中的用户数,也可以在用户模型中添加创建前回调以执行相同操作

但是,在用户模型中执行此操作会给用户带来无法修改的错误

如果在自定义Desive注册控制器中执行此操作,则可以自定义错误以及应用程序处理错误的方式


在您的模型中实现这一点比您的控制器更合适
下面是一个例子:

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
课程主持人3
返回错误
结束
真的
结束
结束

但我如何才能看到此控制器?您无法看到它。您必须创建一个新的继承自Desive one并使用自定义方法。我在我的帖子中添加了一个新的链接,该链接将向您展示如何自定义ITAVIOD,从而避免在控制器中对模型应用约束。是的,但是您可以自定义在模型中执行此操作时向用户显示的错误吗?当然,可以将其视为自定义验证。我没有想到,所以是的,您应该在模型中执行此操作。为什么要调用“.好的“只是为了得到号码?这是无效的。只需使用mediator.size或mediator.count,但你能解释这两个答案之间的区别吗?当然。这是Desive用户的一个模型验证问题,因此放置此逻辑是控制器不遵循model-View-controller。并且您使用围绕MVC设计的Rails。