solnic / virtus

[DISCONTINUED ] Attributes on Steroids for Plain Old Ruby Objects
MIT License
3.77k stars 228 forks source link

Strange Boolean behaviour #377

Open ktimothy opened 7 years ago

ktimothy commented 7 years ago
irb(main):016:0> Virtus::Attribute.build(true).is_a?(Virtus::Attribute::Boolean)
=> true
irb(main):017:0> Virtus::Attribute.build(false).is_a?(Virtus::Attribute::Boolean)
=> false

Found it out while investigating a bug in grape.

acook commented 7 years ago

Yeah, looks like FalseClass isn't listed as a primitive for it: https://github.com/solnic/virtus/blob/master/lib/virtus/attribute/boolean.rb#L18

ktimothy commented 7 years ago

It also looks like only one primitive type can be set.

(Oh, Ruby, TrueClass and FalseClass, seriously? =))

envygeeks commented 7 years ago

Ruby has no primitive types.

ktimothy commented 7 years ago

I meant primitive attribute of Virtus::Attribute class.

acook commented 7 years ago

@envygeeks Virtus::Attribute has a primitive accessor: https://github.com/solnic/virtus/blob/master/lib/virtus/attribute.rb#L51