Ruby on rails 如何按键查找或创建并插入值
在Rails 3中,如果新记录仍然不存在,可以添加新记录并填充另一个属性,如下所示: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
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)
喜欢。在我看来,这条路就是“轨道之路”。谢谢