阻止创建一个类的多个对象

Pra*_*tha 7 ruby ruby-on-rails mongoid ruby-on-rails-3

如何将任何类的对象限制为一个.我的班级看起来像:

class Speaker
  include Mongoid::Document
  field :name, :type => String
end
Run Code Online (Sandbox Code Playgroud)

我只是想让一个扬声器的实例.一种方法是添加验证,该验证将检查已经存在的Speaker类的对象的数量.有没有红宝石的做事方式?

Fra*_*itt 10

如何使用Singleton模块?


Sła*_*osz 8

在这种情况下,我会写出适当的验证:

validate :only_one

def only_one
   errors.add(:base, "Only one Speaker can exist") if self.count > 0 
end
Run Code Online (Sandbox Code Playgroud)

  • ``NoMethodError:未定义的方法`count` for#<Speaker:0x28f18e1d>`` - `self`在验证方法的上下文中是一个实例,因此`self.count`需要更改为`Speaker.count`或`self.class.count` (2认同)