That's not how it works with ActiveRecord. When you assign array of ids to a relation, it triggers save so the 'old' value changes immediately (for already persisted records). Plus the testing object knows nothing about persistence (which is good) it tests only the change tracking.