2013-04-18 90 views
0

我正在使用rails JSON gem快速爲我的數據庫播種JSON數據。 在我seeds.rb文件,我有這個方法Rails種子JSON忽略一些屬性

businessPath = "#{Rails.root}/public/business2.json" 
    businesses = JSON.parse(File.read(businessPath)) 
    businesses.each do |business| 
    Business.create!(business)  
end 

然而,他們給我爲我不希望這種模式對企業有一些額外的屬性JSON數據。當我嘗試按照原樣播種時,出現此錯誤。

Can't mass-assign protected attributes: schools, categories, neighborhoods, longitude, latitude, type 

這些都是我沒有在我的商業模式具有的屬性在那些在JSON文件中的每個業務屬性的Rails。有沒有辦法在運行Business.create之前忽略這些屬性?

謝謝!

回答

4

嘗試使用ActiveSupport提供的Hash#sliceHash#except。您可以運行:

businessPath = "#{Rails.root}/public/business2.json" 
businesses = JSON.parse(File.read(businessPath)) 

然後你就可以黑名單額外的屬性

businesses.each do |business| 
    Business.create!(business.except(:schools, :categories, :neighborhoods, :longitude, :latitude, :type)) 
end 

或者白名單只是屬性要保持

businesses.each do |business| 
    Business.create!(business.slice(:name, :owner, :etc)) 
end