Ruby on rails Rails:Validate至少有一个具有条件
我有一个模型a有很多B。我想验证a是否至少有一个B的活动字段设置为true。当B是更新的模型时,我如何向A添加自定义验证以强制执行此操作?有几种方法,最简单的方法是通过模型中的验证,例如: 验证:活动 然后在模型中定义一个私有活动方法Ruby on rails Rails:Validate至少有一个具有条件,ruby-on-rails,validation,Ruby On Rails,Validation,我有一个模型a有很多B。我想验证a是否至少有一个B的活动字段设置为true。当B是更新的模型时,我如何向A添加自定义验证以强制执行此操作?有几种方法,最简单的方法是通过模型中的验证,例如: 验证:活动 然后在模型中定义一个私有活动方法 def active *enter logic that define attributes required to be validated* end 也许我不太明白你到底想做什么。 您是否使用ActiveRecord::NestedAttribute尝试过
def active
*enter logic that define attributes required to be validated*
end
也许我不太明白你到底想做什么。 您是否使用ActiveRecord::NestedAttribute尝试过此操作 如果你只是更新B-B将被验证。您可以阻止保存B-但不能保存A 也许您喜欢通过更新B在A-triggert中设置一些标志。 这可以通过使用回调方法来实现: 或者,如果A没有其他活动B,则可以将B标记为无效 诸如此类:
validate :your_custom_validation_for_b
def your_custom_validation_for_b
unless self.your_model_a.your_model_b.where(active: true).exists?
errors.add(:active, "at least this B for A should be active")
end
end
有多个:b,->{whereb.active=?,true},:class\u name=>b