验证具有特定值的动态创建对象的存在

时间:2016-02-11 02:01:50

标签: ruby-on-rails validation ruby-on-rails-4

我有两个模型CompanyPerson。它们与Company has_many :people相关。您可以通过使用cocoon将任意数量的人添加到Company。一个人有几个字段,其中一个是布尔值:boss

我想设计创建验证以确保公司保存时,它确保至少有一个人是老板(boss: :true)。

现在我可以检查以确保公司有人

validates_presence_of :people

但我喜欢

之类的东西
validates_presence_of people.where(boss: true)

有快速,干净的方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

让我们创建自定义验证方法

validate :at_least_one_person_is_boss

def at_least_one_person_is_boss
  if self.people.where(boss: true).count == 0
    errors.add(:people, "at least one person is boss")
  end
end