added methods to handle has_one :through counter cache