Usage

Add to your Gemfile:

gem 'csv_validator'

Run:

bundle install

Then add the following to your model:

attr_accessor :my_csv_file

validates :my_csv_file, :csv => true

This will check to see if it is a properly formed CSV file.

In this case, csv_validator expects :my_csv_file to be an instance of ActionDispatch::Http::UploadedFile, which is created by default for Rails uploads.

Other validation options

There are a handful of other options for more specific validation too. A complete list is below... note that you wouldn't use all simultaneously.

validates :my_csv_file, :csv => {
                          :columns => 3, # an exact number of columns
                          :max_columns => 10, # a maximum number of columns
                          :min_columns => 1, # a minimum number of columns
                          :rows => 20, # an exact number of rows
                          :max_rows => 30, # a maximum number of rows
                          :min_rows => 2, # a minimum number of rows
                          :email => 0, # will check to make sure all emails in specified column are valid email addresses
                          :numericality => 0, # will check to make sure all values in specified column are numerical
                        }