ActiveModel::Dirty implementation