Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails使用find_或create_by、create_with和可选链接向上插入_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails使用find_或create_by、create_with和可选链接向上插入

Ruby on rails Rails使用find_或create_by、create_with和可选链接向上插入,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,我正在使用下面的代码来升级我的模型,该模型工作正常但冗长。我想通过使用find_或

我正在使用下面的代码来升级我的模型,该模型工作正常但冗长。我想通过使用
find_或
create_with
和可选链接来缩短它,但它没有按预期工作

有人能给我一些建议吗

详细的代码-

user_attr = {
              first_name: 'Scarlett',
              last_name: 'Johansson',
              profession: 'Actress',
              address: 'Los Angeles'
            }

....
existing_user = User.find_by(first_name: user_attr.fetch(:first_name), 
                             last_name: user_attr.fetch(:last_name))
if existing_user
  existing_user.update!(user_attr)
 else
  User.create!(user_attr)
end

Output:
# => #<User id: 2, first_name: "Scarlett", last_name: "Johansson", profession: "Actress", address: "Los Angeles">

参考-

您可以
首先通过
查找或创建,然后
更新

user=user.find\u或\u create\u by!(姓:“斯佳丽”,姓“约翰逊”)
user.update!(职业:“女演员”,地址:“洛杉矶”)

您可以
首先通过
查找或创建,然后
更新

user=user.find\u或\u create\u by!(姓:“斯佳丽”,姓“约翰逊”)
user.update!(职业:“女演员”,地址:“洛杉矶”)
User
  .create_with(user_attr)
  .find_or_create_by(first_name: user_attr.fetch(:first_name), 
                     last_name: user_attr.fetch(:last_name))