2014-03-25 82 views
-1

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

假设我有一个数组,像这样: lregion=["de", "eu", "us", "it"]

我希望把他们在我的表与此脚本,然后,如果已经有名为“欧盟”的元素不应该创建再次。

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崩溃。

有没有人有我的问题的想法?

+1

验证唯一性并拯救错误或使用first_or_create –

回答

3

你会使用find_or_create

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

这将搜索如果country_code已经被注册,如果不是的话,那么它会创建一个新的。

+0

非常有帮助!谢谢!但我意识到,它总是与验证唯一性的作品。 但是你的帮助很大!我需要这个自动创建多对多的关系。谢谢! – user3383458

+0

很高兴帮助:)我认为它会验证唯一性,但你提到它会弄脏别的东西。 :) –

0

我以前的声明

做这样是很重要的,因为我使用这个脚本在我的种子文件,并不能只用独特性:真实的在我的模型,因为它将使种子.rb崩溃。

错了。我可以轻松使用这个!

相关问题