ActiveRecord中的model_name.new()是否仅创建新记录或更新现有记录

时间:2013-04-10 15:56:32

标签: ruby-on-rails ruby activerecord rake pg

我有一个模型,我在下面的ruby脚本中使用活动记录。像level_type,name,parent.id和pipcode这样的东西被分配给模型的属性以进入级别表。我的问题是,这只适用于新记录吗?你看,名字,parent.id和pipcode经常变化。每次这些值发生变化时,我都不希望它创建新记录。我希望用来自pipcode,parent.id等的新值来更新现有记录。

我的记录创建代码:

          new_region = Level.new(
            :level => level_type,
            :name => name,
            :parent_id => parent.id,
            :make_code => pipcode
          )

1 个答案:

答案 0 :(得分:1)

当你调用new_region.save()时,Level.new(...)通常用于创建一个新行

如果要更新,首先需要通过调用以下内容来查找要更新的行:

# if patient_id is the primary key
existing_region = Level.find(patient_id)

此时,您可以更新existing_region的参数并调用.save()来更新数据库。

existing_region.level = level_type
existing_region.name = name
...
existing_region.save()
相关问题