Итак, что я в итоге сделал, это
class VacationApproval < ActiveRecord::Base
has_many :entries , :conditions => {:job_id => Job.VACATION.id }, :dependent => :nullify
class Entry < ActiveRecord::Base
validates_presence_of :vacation_approval_id ,:if => lambda {|entry| entry.job_id == Job.VACATION.id} , :message => "This Vacation Has Been Canceled. Please Delete These Entries."
, а затем
@entries.each {|entry| entry.destroy if entry.invalid? }
в действии index моего контроллера.
и
`raise "Entries are not valid, please check them and try again ( Did you cancel your vacation? )" if @entries.any? &:invalid?`
в действии отправки
Проблема с одновременным удалением остальных заключается в том, что мой пользовательский интерфейс делает 10 Ajax-вызовов, чтобы выбрать 10 строк, и удаляет их все в первый раз, когда я получаю 9 необработанных 404 ответов, что было нежелательно.
Так как мне все равно, они остаются там до тех пор, пока Заявка не может быть подана, все в порядке.
Это был самый простой / безопасный / рекурсивный способ для меня, но, вероятно, не самый лучший. Спасибо за вашу помощь!