implemented ActiveModel::Dirty