lazy load self.columns in default_scope