Tak w celu lepszego poznanie railsów “od kuchni” postanowiłem napisać prostego plug-ina umożliwiającego omijanie niektórych walidacji.
Chwilę myślałem jak to zrobić, tak aby rozwiązanie było jak najbardziej uniwersalne (obsługa własnych, niestandardowych walidacji itp). Obecnie kod wygląda +/- tak, nie jestem z niego zbyt zadowolony. Najwięcej problemu przysporzyło mi odpalanie tej mojej funkcji. Aktualny sposób nie jest za dobry: nie wiadomo jak będzie zachowywał się skrypt gdy użytkownik doda własną funkcję podpiętą pod after_validation, nie działa metoda #valid? (!) (nie jest wywoływany odpowiedni callback) itd.
Ma ktoś lepszy pomysł jak to technicznie rozwiązać? Proszę o podanie tylko schematu, zapisaniem ja się zajmę
[code=ruby]class ActiveRecord::Errors
def delete(attribute)
@errors.delete(attribute.to_s)
end
end
class ActiveRecord::Base
after_validation :skip_marked_validations
def validations_to_skip!(*attributes)
@validations_to_skip = attributes.to_a || []
end
def skip_marked_validations
@validations_to_skip ||= []
@validations_to_skip.each do |attribute|
errors.delete(attribute)
end
end
end[/code]