【问题标题】:Script to Update field in rails脚本来更新rails中的字段
【发布时间】:2019-01-28 23:51:36
【问题描述】:

我有一个包含父母及其子女数据的 csv 文件。父母有许多子女关联。我想要的是如果 family_situation/gross_income 或两者对于不同的孩子不同,我希望将该父母的最后一个 family_situation/gross_income 保存到数据库中。就像在下面的这种情况下,我希望family_situation 是“三口之家”,总收入是“16775”。我目前在我的父模型中拥有的内容如下。我怎样才能做到这一点,请帮忙。

父.rb

def self.import(file)
  CSV.foreach(file.path, headers:true) do |row|
    parent = Parent.find_or_create_by(
        parent_1_firstname: row["parent_1_firstname"],
        parent_1_lastname: row["parent_1_lastname"],
        family_situation: row["family_situation"],
        gross_income: row["gross_income"],
   )

        parent.children.find_or_create_by(
        firstname: row["firstname"],
        gender: row["gender"]

   )
        end
    end

父.csv

parent_1_firstname,parent_1_lastname,family_situation,gross_income,childfirstname,childgender
Josh,Wilson,"family of two",13000,Jessica,Female
Josh,Wilson,"family of three",16775,Jamie,Male

【问题讨论】:

    标签: ruby-on-rails csv ruby-on-rails-5 csv-import


    【解决方案1】:

    由于您只想保存 family_situation 和 Gross_income 的最后一个值,您可以找到现有的父级并更新它:

    parent = Parent.find_or_initialize_by(
      parent_1_firstname: row["parent_1_firstname"],
      parent_1_lastname: row["parent_1_lastname"]
    ).tap do |p|     
      p.family_situation = row["family_situation"]
      p.gross_income = row["gross_income"]
      p.save
    end
    

    在这里,您尝试查找具有特定名字和姓氏的父母。如果存在,则将其实例化,如果不存在,则使用给定的名称构建。之后,您将分配 family_situation 和 Gross_income 并保存实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多