rails 3.1活动记录插入或更新

pab*_*blo 3 activerecord ruby-on-rails insert

我是铁杆新手.

在活动记录中是否有一种简单的方法可以传递数据哈希,如果记录存在,则更新它,如果不存在,则创建它?

data = {}
data["my_id"] = 356345
data["description"] = "test123"

w = Descriptions.new(data)
Run Code Online (Sandbox Code Playgroud)

理想情况下,如果我运行上述内容,每次运行时只会有1条记录,而不是多条记录.

Ban*_*eil 11

假设您想要"my_id"位是唯一的,您可以运行

Descriptions.find_or_create_by_my_id(data["my_id"]).update_attributes(data)
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用`find_or_initialize`代替.这个答案有效,但它会为新记录保存两次(1.创建,2.更新). (2认同)