2013-04-18 3 views
0

Я использую рельсы JSON gem для быстрого извлечения моей базы данных данными JSON. В моей seeds.rb файл, у меня есть этот методRails seed 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 

Те атрибуты не имеют в своей бизнес-модели в Rails, которые являются атрибутами для каждого бизнеса в файле формата JSON. Есть ли способ игнорировать эти атрибуты перед запуском Business.create?

Спасибо!

ответ

4

Попробуйте Hash#slice или Hash#except, что и ActiveSupport. Вы можете запустить:

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 
Смежные вопросы