These are chat archives for dry-rb/chat

21st
Mar 2018
Gustavo Caso
@GustavoCaso
Mar 21 2018 12:19
I'm not a very experience dry-validations user but I wanted to share a question regarding some bahaviour I found for error messages
Having this schema
BusyPeriods = Dry::Validation.Schema do
  each do
    schema do
      required(:start_date).filled(:date?)
      required(:end_date).filled(:date?)
      required(:utilisation).filled(:int?)

      rule(started_before_ended: [:start_date, :end_date]) do |start_date, end_date|
        end_date.gt?(value(:start_date))
      end
    end
  end
end
If I try to validate some data if the error is related with the required attributes I will get a message with the format { index => error_message } but if the error comes from the rule I will get just the error with out the index. Is that expected?
{0=>{:utilisation=>["must be an integer"]}}
{:started_before_ended=>["must be greater than 2018-03-21"]}
Piotr Solnica
@solnic
Mar 21 2018 13:45
@GustavoCaso end_date.gt?(start_date)
Gustavo Caso
@GustavoCaso
Mar 21 2018 13:58
Thanks @solnic
Christian Meier
@mkristian
Mar 21 2018 14:05
hi, found some in the issue of dry-validation how to reuse a Schema for nested arrays. wanted to extend the documentation a bit, is it to make a PR against: https://github.com/dry-rb/dry-rb.org ?
looks like autogenerated somehow !
Aaron Barthel
@abrthel
Mar 21 2018 14:08
@mkristian from that link, then follow this folder path source > gems > dry-validation From there you just have to edit the markdown files
Christian Meier
@mkristian
Mar 21 2018 14:13
ok - thanks. and I leave gz file as is ?
Aaron Barthel
@abrthel
Mar 21 2018 14:16
under docs? Yeah you dont need to alter them at all. The markdown files get rendered into the actual deployable site.
Nicolas Cavigneaux
@Bounga
Mar 21 2018 16:59
Hi there. I'm playing with Dry Types and I'm wondering if it is possible to do something like Types::Strict::String.constrained(filled: true) ?
Gustavo Caso
@GustavoCaso
Mar 21 2018 17:01
Absolutely you can
Nicolas Cavigneaux
@Bounga
Mar 21 2018 17:02
Is this the right syntax ?
Gustavo Caso
@GustavoCaso
Mar 21 2018 17:02
Yes
Nicolas Cavigneaux
@Bounga
Mar 21 2018 17:02
Seems like it doesn't work in my example code
Gustavo Caso
@GustavoCaso
Mar 21 2018 17:03
Types::Strict::String.constrained(filled: true).('')
Dry::Types::ConstraintError: "" violates constraints (filled?("") failed)
Types::Strict::String.constrained(filled: true).(nil)
Dry::Types::ConstraintError: nil violates constraints (type?(String, nil) AND filled?(nil) failed)
Nicolas Cavigneaux
@Bounga
Mar 21 2018 17:03
oh I should have said this before but I use it through Hanami, so I have attribute :ref, Types::Strict::Int.constrained(filled: true)
Gustavo Caso
@GustavoCaso
Mar 21 2018 17:03
Types::Strict::String.constrained(filled: true).('helllo')
=> "helllo"
Could you provide the version is using?
Nicolas Cavigneaux
@Bounga
Mar 21 2018 17:05
0.12.2
Gustavo Caso
@GustavoCaso
Mar 21 2018 17:06
What error do you see? I guess is possible to do in master
Nicolas Cavigneaux
@Bounga
Mar 21 2018 17:06
I don't have any error, it just doesn't constrain the attribute to be filled
User.new(uid: 1, email: "foo", role: "admin").ref
=> nil
Gustavo Caso
@GustavoCaso
Mar 21 2018 17:07
I'm not an expert in Hanami, but let me see if I can help
Nicolas Cavigneaux
@Bounga
Mar 21 2018 17:09
irb(main):011:0> class Testing < Hanami::Entity
irb(main):012:1> attributes do
irb(main):013:2* attribute :ref, Types::Strict::Int.constrained(filled: true)
irb(main):014:2> end
irb(main):015:1> end
=> true
irb(main):016:0> Testing.new.ref
=> nil
oh
irb(main):017:0> Testing.new(ref: nil)
TypeError: nil (NilClass) has invalid type for :ref violates constraints (type?(Integer, nil) AND filled?(nil) failed)
Gustavo Caso
@GustavoCaso
Mar 21 2018 17:10
If you remove the constrained part ?
So looks like is working, just need to pass the values :smile:
Nicolas Cavigneaux
@Bounga
Mar 21 2018 17:12
Yes! I'd hope to have a way to tell "this attribute must be present"
I can do this through a custom initialize method though
Gustavo Caso
@GustavoCaso
Mar 21 2018 17:14
present == filled ?
Nicolas Cavigneaux
@Bounga
Mar 21 2018 17:16
not sure, official documentation only list available constrain without explaining what it does
Nicolas Cavigneaux
@Bounga
Mar 21 2018 17:19
Yes so if the attribute is not present there's no check, that dry-validation job which provides required keyword
Thank a lot for your help
Gustavo Caso
@GustavoCaso
Mar 21 2018 17:20
Yes I think Hanami use dry-validations right?
Nicolas Cavigneaux
@Bounga
Mar 21 2018 17:20
yes
Gustavo Caso
@GustavoCaso
Mar 21 2018 17:20
Nice so you can solve the issue right ?
Nicolas Cavigneaux
@Bounga
Mar 21 2018 17:21
Yes I was doing my check in the wrong place
Gustavo Caso
@GustavoCaso
Mar 21 2018 17:22
:+1: