Hi!
Newbie question: Can I change #errors method to #output without destroying dry-validation?
Hi!
Newbie question: Can I change #errors method to #output without destroying dry-validation?
#output is a built-in methods, why would you replace it with another built-in method? Without thinking it through I’d say no, you cannot do it.
Thanks. I am migrating forms from dry-validation 0.11 to 1.6.
In app, we call #output on form after validation: form.call(data) → form.output → receive hash object. However in 1.6 version I get NoMethodError on #output. Am I correct that in this case #output is equivalent to #to_h?
I got thing mixed up, actually #output isn’t defined for contracts so you can have an alias without risks. You can create a custom subclass for your contracts
class MyContract < Dry::Validation::Contract
alias_method :output, :to_h
end
Big thanks!
Hmm.@flash-gordon I think we don’t understand each other(probably because of my initial question). [dry-validation 1.6] When I do: form.call(data) form is validated, but the result is no longer an object of a class I defined(Dry::Validation::Contract::MyContract). It is now an object of Dry::Validation::Result class. I think I have to extend this class so I can call #output instead of #to_h in order to get a hash of data. I don’t want to manually change #output to #to_h in app I am working on.
Quite simple:
module Dry
module Validation
class Result
def output
self.to_h
end
end
end
end
and it works as expected now. No need to change #output to #to_h