Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 如何按键查找或创建并插入值_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 如何按键查找或创建并插入值

Ruby on rails 如何按键查找或创建并插入值,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,在Rails 3中,如果新记录仍然不存在,可以添加新记录并填充另一个属性,如下所示: Model.find_or_create_by_title('my title', attr1: 1, attr2: 2) 因此,这将按标题显示模型 select * from models where title = 'my title' 如果它不存在,那么它将使用attr1和attr2创建它 此方法将被弃用,因为它正在覆盖缺少的\u方法,新方法将使用哈希作为键: Model.find_or_create

在Rails 3中,如果新记录仍然不存在,可以添加新记录并填充另一个属性,如下所示:

Model.find_or_create_by_title('my title', attr1: 1, attr2: 2)
因此,这将按标题显示模型

select * from models where title = 'my title'
如果它不存在,那么它将使用attr1和attr2创建它

此方法将被弃用,因为它正在覆盖缺少的\u方法,新方法将使用哈希作为键:

Model.find_or_create_by(title: 'my title', attr1: 1, attr2: 2)
但是,还会搜索attr1:1、attr2:2和sql的问题如下所示:

select * from models where title = 'my title' and attr1 = 1 and attr2 = 2
现在的问题是:我如何按键搜索模型,如果模型不存在,则创建它并在一个插入中填充,因为所有的黑客(如查找、创建然后更新)都无法使用“Rails方式”


谢谢大家

不太清楚,我理解你们的问题,但这是答案

 Model.find_or_create_by(title: 'my title') do |a|
  a.attr1 = 1
  a.attr2 = 2
 end
您可以在官方的rails指南中找到更多信息:。

试试这个:

Model.where(title: 'my title').first_or_create(attr1: 1, attr2: 2)

喜欢。在我看来,这条路就是“轨道之路”。谢谢