如果行不存在则创建行

use*_*058 2 ruby-on-rails

我需要做这样的事情:

if @item.exists?(:cron => "mycron")
  # redirect to item page
else
  # create new @item
end
Run Code Online (Sandbox Code Playgroud)

在Rails中有更简单的方法吗?

也许是这样的:

@item.create_if_not_exists(:cron => "mycron")
Run Code Online (Sandbox Code Playgroud)

dee*_*our 7

是的,它被称为 find_or_create_by

@item = Item.find_or_create_by_cron("mycron")
# redirect to item page
Run Code Online (Sandbox Code Playgroud)

  • 我认为`find_or_create`在rails 4中被弃用,而不是[first_or_create](http://apidock.com/rails/v3.2.1/ActiveRecord/Relation/first_or_create) (4认同)