在RAILS中上传之前validation.xls文件中的列数
我正在使用CarrierWave Gem in Rails上传.xls文件。 在上传xls文件之前,我想validation.xls文件:
1)包含一定数量的列
2)第一行包含某些标题。
我真的不知道从哪里开始。 我知道validation必须发生在模型中,我也看到有一个用于validationcsv的gem,但没有任何xls。 我只需要指出正确的方向。
你可以试试Roogem
sheet = Roo::Excel.new("./excel_file.xls") # Get the header sheet.row(1) # Number of columns sheet.last_column
http://railscasts.com/episodes/396-importing-csv-and-excel
为了validation,只需创build一个可以工作的方法:
def validate(sheet) errors = [] header = sheet.row(1) num_of_columns = sheet.last_column errors << 'Need headers' unless (ARRAY_OF_NEEDED_HEADERS - header).empty? errors << 'Need more columns' if num_of_columns < NUMBER_OF_COLUMNS errors end
你可以在模型上创build你自己的validation器: http : //guides.rubyonrails.org/active_record_validations.html#performing-custom-validations