gpt4 book ai didi

ruby-on-rails - Rails find_or_create_by 带/不带哪里

转载 作者:数据小太阳 更新时间:2023-10-29 07:55:31 29 4
gpt4 key购买 nike

假设我有一个名为Task 的模型。我想find_or_create_by一些任务。

t = Task.where(done: false).find_or_create_by(title: 'epic')

此模型有效,但创建一个 title 等于 epic 且 done 等于 false 的任务。我希望通过 done 的查询搜索等于 false,但我不希望新记录 done 等于 false。我该怎么做?

最佳答案

您可以使用名为:find_or_initialize_by 的东西.它只初始化记录,但不创建记录。这样,您可以稍后覆盖属性:

 task = Task.where(done: false).find_or_initialize_by(title: 'epic').first
task.done = true # or nil or whatever you want!
task.save

我只用 task.done = true 保存了第一条记录。如果有多条记录,可以使用 each 遍历所有记录,并全部保存。

编辑:

Task.where(:done => false).first_or_initialize do |task|
task.done = true
task.title = 'epic'
end

关于ruby-on-rails - Rails find_or_create_by 带/不带哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30952981/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com