1

我有一个excel表,格式如下: 在此处输入图像描述

成员在相应的members表中可以有多个条目。从 excel 模板上传数据时,我想find_by pin以及end_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_byend_date

4

1 回答 1

1

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

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

find_by在这里有更多解释

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

where在这里有更多解释

于 2019-10-27T06:08:57.407 回答