2013-04-01 2 views
0

В моем seed.rbКак определить, сохранен ли массив в рельсах?

puts 'DEFAULT Categories' 
    categories = Category.create([{name:'cat1'},{name:'cat2'}, {name: 'cat3'} ]) 
    if categories.save 
    puts "categories saved" 
    else 
    puts "categories save failed" 
    end 

Я использую это, чтобы установить категории по умолчанию , но проблема в том, что я не могу if categories.save, чтобы увидеть, если все категории пункт спасется и, следовательно, seed.rb получить прошло Итак, как я могу узнать, сохраняется ли массив? (Все его элементы) Thanks

ответ

0

Использовать create! вместо create. Это вызовет исключение, если оно не сэкономит.

+1

Многое (если не большинство) времени, взорвав приложение с исключением из-за плохого спасения - плохая идея. Лучше проверить, вернули ли Model.save true или false, а затем, если необходимо, визуализируют ошибки. – messick

+0

Для чего-то ориентированного на пользователя, я бы согласился. Но это в начальной задаче. –

+0

очень верно. В этом случае взлом приложения во время семян может быть тем, что вам нужно сделать. – messick

0

.create создает запись. Итак, когда вы добираетесь до утверждения if, ничего не происходит, потому что сохранение уже произошло во время создания.

Измените ваш .create к .new, и вы будете иметь возможность проверить, если сохранить успешно получилось:

puts 'DEFAULT Categories' 
categories = Category.new([{name:'cat1'},{name:'cat2'}, {name: 'cat3'} ]) 
if categories.save 
    puts "categories saved" 
else 
    puts "categories save failed" 
end 
0
if categories.all.each(&:persisted?) 
    puts "categories saved" 
else 
    [...] 
end