【问题标题】:Upload excel data using a combination of two columns?使用两列的组合上传excel数据?
【发布时间】:2019-10-27 04:50:50
【问题描述】:

我有一张 Excel 表格,格式如下:

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

我认为如果我在find_by 方法中同时使用pinend_date,我将更新特定记录,因为表中可能有两个条目,但其中一个必须有一个end_date。我怎样才能做到这一点?谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

    find_by解释更多here

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

    where解释更多here

    【讨论】:

    猜你喜欢
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    相关资源
    最近更新 更多