测试名称是否已被使用

时间:2014-03-25 12:20:15

标签: ruby-on-rails arrays activerecord if-statement

是否有可能测试是否已存在具有相同名称的元素?

我们假设我有一个数组,如下所示: lregion=["de", "eu", "us", "it"]

我想用这个脚本将它们放在我的表中,然后,如果已经存在一个名为“eu”的元素,则不应再次创建它。

    lregion.each do |x| 
      if      #this "actually" should test, if there is already a country with this countrycode
        Country.create(countrycode: x)                                              #creates Country
      end
    end

这样做很重要,因为我在我的种子文件中使用这个脚本,并且不能在我的模型中使用uniqueness: true,因为它会使seeds.rb崩溃。

有没有人对我的问题有所了解?

2 个答案:

答案 0 :(得分:3)

您使用find_or_create

<% lregion.each do |x| %>
   <% Country.find_or_create_by(countrycode: x.country_code) %>
<% end %>

这将搜索country_code是否已经注册,如果没有注册,那么它将创建一个新的。{/ p>

答案 1 :(得分:0)

我之前的陈述

  

这样做很重要,因为我在我的种子文件中使用这个脚本,并且不能只使用唯一性:在我的模型中为true,因为它会使seeds.rb崩溃。

错了。我可以很容易地使用它!