Неизвестный атрибут "id" при импорте csv в приложение rails - PullRequest
0 голосов
/ 23 сентября 2019

Я импортирую CSV в свое приложение и получаю ошибку маршрутизации "неизвестный атрибут 'id' для TableName"

Насколько я понимаю, это должно быть из-за того, что у моего CSV есть столбцыэто не соответствует моему столу, но это не так.Я почти уверен, что это связано с тем, что имя моего столбца в .csv является «id», так как это может быть зарезервированное слово, но я попытался установить id: false в моем create_table, и у меня все еще есть ошибка.

Я все еще изучаю рубин, поэтому любая помощь будет признательна.Спасибо!

схема:

class CreateContacts < ActiveRecord::Migration[5.2]
  def change
    create_table :contacts do |t|
      t.integer :id
      t.string :first_name
      t.string :last_name
      t.string :company
      t.string :email
      t.string :address1
      t.string :address2
      t.string :city
      t.string :state_long
      t.string :state
      t.string :phone

      t.timestamps
    end
  end
end

контроллер:

require 'csv'

class ContactController < ApplicationController
  def index
  end

  CSV.foreach('app/data/contact_data.csv', :headers => true) do |row|
    Contact.create!(row.to_hash)
  end
end

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

В Rails id генерируется автоматически, поэтому вам не нужно указывать идентификатор в файле миграции.Вы можете удалить эту строку в файле миграции:

t.integer :id
0 голосов
/ 23 сентября 2019

id имеет значение attr_protected, поэтому вы не можете установить его вручную при создании, вы можете установить его следующим образом:

Contact.create!(row.to_hash, without_protection: true)

, но будьте осторожны, когда для параметраless_protection установлено значение true.Вы можете прочитать больше об этом здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...