AaronLasseigne/active_interaction

Unexpected validation behavior on filters with validators

Opened this issue · 3 comments

Given the following interaction, I would expect behavior around validations to be:

class Foo < ::ActiveInteractin::Base
  string :bar
  validates :bar, presence: true
end

x = Foo.new
x.valid? == false # it's actually nil
x.bar = "baz"
x.valid? == true # unfortunately it's still nil

In each test, rather than the boolean expected, I'm seeing nil returned. In the first example, that's at least still falsey, but it's not the behavior I'd expect from a typical failed validation using vanilla ActiveModel validations. In the second example that should cure the validation problem, but I still see nil.

I consider falsey values sufficient. Interactions aren't really intended to be rerun. What's the valid use case for rerunning one?

I uncovered this while messing around in the rails console and getting confused when even after fixing a validation error, I was still getting a falsey value. I thought something else was going on before I finally realized it was a bug.

I guess my argument would be that since this is meant to behave like ActiveModel with respect to its validations, and since ActiveModel validations are curable, then ActiveInteraction's should be as well. That way it'll behave like you'd expect. I'd be happy to resurrect my PR that addresses this.

I've reopened my original PR.