2014-02-17 53 views
0

我嘗試通過rake db:seed遷移以通過種子助手導入數據。Rake Aborted:無法批量分配受保護的屬性

一個耙子工作(01_roles),但另一個耙子(02_conditions)說有質量分配保護的屬性。

燈具/開發/ 01_roles.rb

SeedHelper.make_roles 

燈具/開發/ 02_conditions.rb

SeedHelper.make_conditions 

seed_Helper.rb

class SeedHelper 
    include Singleton 

    def self.make_roles 
    file_path = "#{Rails.root}/db/roles.csv" 
    RoleImporter::import(file_path) 
    end 

    def self.make_conditions 
    file_path = "#{Rails.root}/db/conditions.csv" 
    ConditionImporter::import(file_path) 
    end 
end 

模型/ condition.rb

class Condition < ActiveRecord::Base 
    attr_accessible :condition, :bodypart, :description 
end 

我有一種感覺它調用了第一夾具(01_roles)因爲有一個「說明」變量在該文件中,它不叫,作爲一個錯誤:

Can't mass-assign protected attributes: condition, bodypart 

模型/ role.rb

class Role < ActiveRecord::Base 
    attr_accessible :description, :profession, :tag_list, :name 

我在哪裏改耙文件或導入器讀取正確的文件?

+1

你檢查這:http://stackoverflow.com/questions/13247149/cant-mass-assign-protected-attributes-when-import-data-from-csv-file –

回答

0

找到了答案:

我需要添加require 'condition_importer'到importer.rb

然後在condition_importer.rb我Role.create!,而不是通過Condition.create!複製文件:

class ConditionImporter 
    def self.import(file_path) 
    CSV.readlines(file_path, {:headers => :first_row, :encoding => 'UTF-8'}).each do |row| 

    Condition.create!(
     condition:    row['Condition'], 
     bodypart:    row['Bodypart'], 
     description:   row['Description']) 
     end 
end 
end 
相關問題