Контроллер:

class HorsesController < ApplicationController
    require 'csv'

    def index
        @horses = Horse.all
    end

    def import
        Horse.import(params[:file])
        redirect_to root_path
    end
end

Модель:

class Horse < ActiveRecord::Base
  attr_accessible :name, :place

  def self.import(file)
    CSV.foreach(file.path, headers: true) do |row|
        Horse.create! row.to_hash       
    end
  end
end

У меня есть файл CSV, в котором есть два столбца с названием и местом заголовка данных. Когда я пытаюсь импортировать файл, я получаю сообщение об ошибке: Can't mass-assign protected attributes: place

Кажется, я принимаю : name нормально, но по какой-то причине не могу работать с : place ???

Любая помощь приветствуется

0
Kane 3 Окт 2013 в 16:13
4
Просто интересно, ваш CSV-файл отформатирован как name, place вместо name,place? Мне интересно, читается ли это место как <space>place вместо place.
 – 
kobaltz
3 Окт 2013 в 16:17
ГАХ! да это ... спасибо дружище
 – 
Kane
3 Окт 2013 в 16:20
Ржу не могу. Со мной такое случалось раньше. Бритва Оккама в лучшем виде.
 – 
kobaltz
3 Окт 2013 в 16:22

1 ответ

Лучший ответ

Ваш CSV-файл отформатирован как name, place вместо name,place. place читается как <space>place вместо place, что заставляет рельсы выдавать эту ошибку.

2
kobaltz 3 Окт 2013 в 16:21
Спасибо! Я трачу часы на устранение этой проблемы для той же самой проблемы. Это одна из тех сводящих с ума маленьких ошибок, которые вы узнаете один раз и, надеюсь, никогда не забудете. Оцените ответ.
 – 
acoustic_north
27 Янв 2014 в 03:45