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 => trueThis 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.
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 }