validationhas_and_belongs_to_many中的至少一个

我有一个模型:

has_and_belongs_to_many :users 

如何validation模型在模型中至少有一个用户? 我试过了:

 validates_presence_of :users 

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

我会写自定义validation:

 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 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 

Josh Susser写了一个插件 ,它添加了一个validates_existence_of方法,可以完成你想要的任务。 它确保外键引用存在的记录。

尝试:

 validates :users, :length => { :minimum => 1 }