2013-08-29 2 views
0

Я пытаюсь загрузить массовую загрузку через CSV. Вот мой метод импорта от моего контроллера:Передача первичного ключа для создания действия с помощью CSV-загрузки

def import 
     params.permit(:id, :brand, :product, :details) 
     Item.import(params[:file]) 
     redirect_to root_url, notice: "Products imported." 
    end 

Которая затем называет этот метод self.import из моей модели Item.

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

Вот моя форма для загрузки:

<%= form_tag import_item_mgmt_index_path, multipart: true do %> 
    <%= file_field_tag :file %> 
    <%= submit_tag "Import" %> 
<% end %> 

Вот мой вопрос: когда я проверяю данные в БД, рельсы является назначение автоинкрементный item_id вместо item_id переходил из моего файла CSV , Мне нужно назначить эти конкретные идентификаторы для моего приложения, и я не уверен, почему я не могу назначить их при создании. Глядя на параметры, я даже не вижу, как мой item_id проходит. Помогите? Заранее спасибо.

Артикул

class Item < ActiveRecord::Base 

has_many :inventory_items 
has_many :vendors, through: :inventory_items 
has_many :list_items 
has_many :shopping_lists, through: :list_items 

searchable do 
text :brand, :stored => true 
text :details, :stored => true 
text :product, :stored => true 
integer :id, :references, :stored => true 
end 
end 
+0

Как выглядит ваша модель 'Item? – zeantsoi

+0

Обновлено с моделью товара. – settheline

+0

Какая модель хранит? Item_id? – zeantsoi

ответ

0

Я не уверен на 100%, но я думаю, что это может сработать.

Сначала вы должны настроить структуру таблицы в соответствии с этим thread поворотом автоинкрементируемого

create_table(:table_name, :id => false) do |t| 
    t.integer :id, :options => 'PRIMARY KEY' 
end 

Если это не работает на своем собственном, добавьте следующую строку в вашу модель.

set_primary_key :id 
+0

Я не мог заставить это работать в моем приложении. Из дополнительных исследований, которые я сделал, похоже, что попытка работать с рельсами, как это может вызвать проблемы, если приложение становится более сложным. Я пошел вперед и добавил поле my product product_code в моей таблице элементов, и я отключил связь. Кажется, сейчас все работает. – settheline

Смежные вопросы