When using PGArray and Dirty, array fields are marked as changed even when set to same array value.
Although the incoming Array is equal to the initial PGArray (using ==), there's an explicit check against the classes that still makes it dirty: https://github.com/jeremyevans/sequel/blob/master/lib/sequel/model/base.rb#L928
My current workaround is to override the setter and explicitly cast to to PGArray before passing to super:
Weird, v.class and c.class should be the same, since typecast_value should return a PGArray, and the existing value should also be a PGArray. I tried something similar in one of my apps and I can't reproduce this, can you submit a failing spec? Are you loading the pg_array extension into the Database object before loading your models? If not, do that and see if it fixes the problem.
I assume this problem is caused by not loading the pg_array extension into the Database object before loading the models. If you are already doing that and you still believe this is an issue, please submit a pull request with a failing spec and I'll look into the issue again.