Ruby on rails 验证中至少有一个具有且属于多个

Ruby on rails 验证中至少有一个具有且属于多个,ruby-on-rails,activerecord,model,Ruby On Rails,Activerecord,Model,我有一个模型: has_and_belongs_to_many :users 如何验证模型中至少有一个用户?我试过: validates_presence_of :users 但这似乎并没有给我想要的…Josh Susser写了一篇文章,其中添加了一个验证方法的存在性,该方法可以满足您的需要。它确保外键引用存在的记录。我将编写自定义验证: validate :has_users? def has_users? # rails 2: errors.add_to_base "Model

我有一个模型:

has_and_belongs_to_many :users
如何验证模型中至少有一个用户?我试过:

validates_presence_of :users

但这似乎并没有给我想要的…

Josh Susser写了一篇文章,其中添加了一个
验证
方法的存在性,该方法可以满足您的需要。它确保外键引用存在的记录。

我将编写自定义验证:

validate :has_users?

def has_users?
  # rails 2:
  errors.add_to_base "Model must have some users." if self.users.blank?
end
那正好可以

注意:在rails 3+中,您必须使用:

  # rails 3+
  errors.add :base, "Model must have some users." if self.users.blank?
在rails 4+中有一个内置的快捷方式,因此您可以简单地执行以下操作:

validates :users, presence: true
在Rails 3.2.x中:

validate :has_users?

def has_users?
  errors.add(:base, 'Error message') if self.users.blank?
end

在rails 4中,您只需

validates :users, presence: true
尝试:


这看起来很有希望,但它不起作用:“无法验证:用户的存在,因为它不是属于的关联。”看起来这只是属于的…我需要使用
self.errors.add:base,“模型必须有一些用户。”
validates :users, :length => { :minimum => 1 }