运行rake时会发生什么:db seed两次?

VoA*_*VoA 3 ruby rake ruby-on-rails seed

我是铁杆的新手,我无法找到这个问题的明确答案.

让我说我有

Project.create!([{title: "foo", description: "bar"}])
Run Code Online (Sandbox Code Playgroud)

在我的seeds.rb文件中然后运行

$rake db:seed
Run Code Online (Sandbox Code Playgroud)

两次.数据库中是否会有两个几乎相同的条目,还是会覆盖初始条目?

Joa*_*nha 7

它会重复.

如果要多次运行,但要防止重复.我想你可以:

  1. 在一个关键字段中使用验证,例如put validate_uniqueness_of :key_attribute
  2. 测试你的表的计数,如:

    MyClass.create if MyClass.count == 0

  3. 更好的解决方案可能是使用find_or_create_by方法.请参阅文档:http://easyactiverecord.com/blog/2014/03/24/using-find-or-create-with-multiple-attributes/