假设我有一个名为的模型Task
。我想完成find_or_create_by
一些任务。
t = Task.where(done: false).find_or_create_by(title: 'epic')
此模型有效,但创建的任务title
等于史诗且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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句