active-hash / active_hash

A readonly ActiveRecord-esque base class that lets you use a hash, a Yaml file or a custom file as the datasource
MIT License
1.19k stars 178 forks source link

Add column_names Method to ActiveHash #310

Open hatsu38 opened 1 month ago

hatsu38 commented 1 month ago

Description

I would like to propose adding a column_names method to ActiveHash, similar to the method available in ActiveRecord. The primary motivation for this addition is to facilitate the generation of CSV headers when exporting data from models that utilize ActiveHash::Base.

In ActiveRecord, the column_names method returns an array of column names as strings. The implementation is straightforward:

# Returns an array of column names as strings.
def column_names
  @column_names ||= columns.map(&:name).freeze
end

motivation

For ActiveHash, having a column_names method would be beneficial in scenarios where we need to export data to CSV, ensuring the headers are generated dynamically based on the model's columns.

Use Case:

Exporting data from ActiveHash::Base models to CSV. Dynamically generating CSV headers based on the model's columns.