查询与创建新对象

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

我想按条件检索一条记录,如果它在数据库里不存在就直接创建一条要检索的这个记录 .. 可以使用 find_or_create_by .. 先查看一下 Tag 模型里的所有的记录

Tag.all

目前它里面什么也没有 ... 使用一下 Tag 模型的 find_or_create_by .. title 等于 rails ... 在 tags 表里检索 title 的值是 rails 的记录 ... 如果不存在,就会直接创建一条这样的记录 ..

Tag.find_or_create_by(title: 'rails')

你会看到,这个方法会先检索这条记录 ... 因为没找到,所以又执行了一个 INSERT INTO,把这条记录插入到了 tags 表里 ...

再执行一下这行代码 ... 这里只会有检索,没有执行插入的动作,因为 Tag 模型在数据库里找到了这条记录 ..

find_or_initialize_by

如果检索的记录不存在,你只想初始化一下这个模型,暂时不想把它保存到数据库里,可以使用 find_or_initialize_by ... 用一下 Tag 模型的这个方法 ... title 的值是 ruby ...

tag = Tag.find_or_initialize_by(title: 'ruby')

查看一上这个模型有没有保存 ...

tag.persisted?

返回的结果是 false .. 再问一下它是不是一个新的记录 ..

tag.new_record?

结果是 true ... 想把它永久的保存到数据库里,可以使用一下 save 方法 ..

tag.save

再检索一下 ..

Tag.all

这里会出现刚才我们手工保存的 ruby 这个标签 ...

查询与创建新对象《 Rails:查询接口 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点