2010-02-24 6 views
1

J'utilise accept_nested_attributes_for pour quelques modèles différents et j'ai une situation étrange.validation de rails contigent sur plusieurs éléments

Je peux ignorer les blancs de création à travers le modèle supérieur, et je peux valider la présence d'enregistrements individuels par le bas, mais est-il possible de faire une validation plus complexe sur un ensemble d'enregistrements?

J'ai les modèles Chambres et Tarifs. Chambres has_many Rates et accepte_nested_attributes_for Rates.

je peux éliminer les blancs avec

accepts_nested_attributes_for :room_rates, :reject_if => lambda { |a| a[:price].blank? } 

mais pour chaque chambre il y a 7 différents dossiers (taux) .. toujours 7 et soumis à la fois de la même forme. Actuellement, si ils entrent seulement 1 jour, il le permettra. Cependant, je voudrais valider que tous les 7 doivent exister. Soit ils entrent tous les 7 et il les accepte ou il leur donne une erreur pour entrer seulement 1 ou 2. Et ne fait rien du tout s'ils laissent tous les 7 complètement vides.

Je n'ai encore rien vu de tel pour nested_attirbutes alors je me demande si c'est possible.

Répondre

1

Je ne suis pas sûr que cela fonctionnerait, mais pouvez-vous pas vérifier la taille des taux dans votre classe de chambre, quelque chose comme:

class Room < ActiveRecord::Base 
    validate :all_rates_present 

... 

private 
def all_rates_present 
    unless rates.size == 7 
    errors.add(:rates, "must all be filled in.") 
    end 
end 
Questions connexes