2013-04-01 22 views
0

在我seed.rb如何確定數組是否保存在rails中?

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獲得通過 那麼,我怎麼才能看到數組是否得到保存? (所有元素) 謝謝

回答

0
if categories.all?(&:save) 
    puts "categories saved" 
else 
    [...] 
end 
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