使用两列的组合上传Excel数据吗?

时间:2019-10-27 04:50:50

标签: ruby-on-rails csv roo-gem

我有一个Excel表格,其格式如下所示: enter image description here

成员可以在相应的members表中具有多个条目。从excel模板上传数据时,我想同时find_by pinend_date,以便在上传过程中更新特定记录。

我正在使用gem roo导入excel数据,这是我的load_imported_members方法:

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_pin(row["pin"]) || Member.new
      member.attributes = row.to_hash.slice("id", "name", "pin", "end_date", "email")
      member
    end
  end

我认为如果在pin方法中同时使用end_datefind_by,我将更新特定的记录,因为表中可能有两个条目,但是必须有一个end_date。我该如何实现?谢谢

1 个答案:

答案 0 :(得分:1)

如果您一次只想查找一条记录,则可以使用带有哈希的find_by()来搜索多个列,如下所示:

Member.find_by(pin:row["pin"],end_date: row["end_date"])

find_by的详细介绍here

如果要检索与搜索匹配的多个记录,则需要在Member类上使用where()函数,而不是find_by()

where的详细介绍here