Sprawdzenie czy model ma przypisane przynajmniej jedno dziecko

Jest Question has_many Choices, czy mozna jakoś za pomocą walidacji sprawdzić czy przypisane jest przynajmniej jedno dziecko a jeśli nie to przy próbie zapisu wyrzucić błąd do flasha ? Czy raczej trzeba takie sprawdzanie samemu dopisać w before_save w Question

Pewnie chodzi o http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates_associated

tak ale to sprawdza czy przypisane dzieci są poprawne a nie czy istnieją

a to nie jest validates_existence_of ??

$ script/plugin install http://svn.hasmanythrough.com/public/plugins/validates_existence/

Można w drugą stronę, tzn. validates_existence_of dla relacji belongs_to (tzn. czy klucz obcy wskazuje na faktycznie istniejący obiekt a nie na nieistniejący)

Sprawdzanie czy rodzic ma przynajmniej 1 dziecko jest osobliwe i należy raczej napisać swoją metodę validate (callback before_save nie jest dobrym rozwiązaniem, bo jest odpalany PO wszystkich walidacjach (w momencie kiedy model.valid? jest true, więc jest zupełnie bezużyteczny do walidacji):

[code=ruby]class Model < ActiveRecord::Base

validate :enforce_child_existence

private
def enforce_child_existence
errors.add_to_base(“Please assign at least 1 child”) if self.children.empty?
end
end[/code]

Można poprostu napisać

validates_presence_of :choices

Kontroler

@question.update_attributes(params[:question])

Model:

accepts_nested_attributes_for :choices, :reject_if => lambda { |c| c[:title].blank? }, :allow_destroy => true validates_presence_of :choices, :if => Proc.new { |q| q.has_choices?} validates_associated :choices, :if => Proc.new { |q| q.has_choices?}
Rozwiązania hosiawaka jak i vijeta działają nie do końca, bo np gdy zaznacze choices do usunięcia i klikne zapisz, wtedy przy wywołaniu walidacji pytanie ma jeszcze jakieś choices, wiec jest poprawne, niepoprawne się staje dopiero po zapisie, gdy wszystkie choices zostały usunięte. Jeśli znowu kliknę zapisz na pustym już pytaniu, wtedy owszem jest błąd.
Tymczasowe rozwiązanie, w modelu Question zostawiłem validates_presence_of i w widoku dałem sprawdzanie czy question jest valid. Nie za ładne to więc może ma ktoś lepsze pomysły.

<%= render :partial => "shared/flash", :locals => {:flash => {:error => question.errors.full_messages}, :class_name => "flashQuestion"} unless question.valid? %>