不能使用带有attr_accessible的roo

时间:2014-01-19 11:15:22

标签: ruby-on-rails-4

我对红宝石很有兴趣;我一直试图使用roo仍然无法导入任何东西!经过几个小时的搜索,我猜问题来自新的rails版本,不再使用accessible_attributes了(教程做得很好,但是他们都使用这个命令...) 没有

这是我想要解决的型号代码。

 #attr_accessible :name, :price, :released_on
  #validates_presence_of :price    

def self.open_spreadsheet(file)
case File.extname(file.original_filename)
when '.csv' then Roo::Csv.new(file.path)
when '.xls' then Roo::Excel.new(file.path)
when '.xlsx' then Roo::Excelx.new(file.path)
else raise "Unknown file type: #{file.original_filename}"
end

def self.import(file)
spreadsheet = open_spreadsheet(file)
header = spreadsheet.row(1)
(2..spreadsheet.last_row).each do |i|
  row = Hash[[header, spreadsheet.row(i)].transpose]
  product = find_by_id(row["id"]) || new
  product.attributes = row.to_hash.slice #(*accessible_attributes)
  product.save!
end
end

1 个答案:

答案 0 :(得分:0)

(2..spreadsheet.last_row).each do |i|
  row = Hash[[header, spreadsheet.row(i)].transpose]
  product = find_by_id(row["id"]) || new
  product.attributes = row.to_hash
  product.save!
end

并确保您在控制器中设置了正确的权限:

def product_params
  params.require(:product).permit(:name, :price, :released_on)
end
相关问题