【发布时间】:2020-02-19 08:55:46
【问题描述】:
我的目标是上传一些列并排除其他列。在这种情况下,我希望只上传name、age 和email 并排除其他。我已经能够使用slice 方法实现这一点,如下所示:
def load_imported_members
spreadsheet = open_spreadsheet
spreadsheet.default_sheet = 'Worksheet'
header = spreadsheet.row(1)
(2..spreadsheet.last_row).map do |i|
row = Hash[[header, spreadsheet.row(i)].transpose]
member = Member.find_by_id(row["id"]) || Member.new
member.attributes = row.to_hash.slice("id", "name", "age", "email")
member
end
end
问题是last_row 考虑到最后一行 (13) 之前的所有行,并且由于表单上有验证,因此由于空行导致数据丢失而出现错误(不应该考虑)。有没有办法像我一样只上传特定的列,但仅限于有数据的行?
【问题讨论】:
标签: csv ruby-on-rails-5 roo