Rails - 查找或创建 - for和array?

时间:2016-04-01 10:25:46

标签: ruby-on-rails postgresql ruby-on-rails-4

我试图做XXX.find_or_create_by(title: "test") 但是有一系列的标题。

现在,如果我这样做

XXX.where(title: ["title1", "title2"]).first_or_create

它只会检查第一个标题

带有first_or_create

逻辑

但是我想为任何标题做这件事.. 任何想法?

谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个会起作用

XXX.where("title IN ('title1','title2',''title3)").first_or_create

答案 1 :(得分:0)

我想你会想做点什么:

found_titles = XXX.where(title: [array_of_titles]).pluck(:title)

to_be_created = [array_of_titles] - found_titles

XXX.create(
  to_be_created.map{ |title| {title: title} }
)

return XXX.where(title: [array_of_titles])