Модель Rails сначала сохраняет, потом вылетает - PullRequest
0 голосов
/ 24 декабря 2010

У меня есть вопрос. Я анализирую контент, используя Nokogiri, и моя цель - обработать этот контент и вставить в базу данных.

Table_rows содержит проанализированные элементы tr / tr, а затем я делаю Nokogiri's node.content.to_a, чтобы получить значения td, которые я хочу.

(примечание: мне нужен этот столбец rec_id, потому что я пока не знаю, как принудительно установить значение id при вставке хе-хе-хе-хе)

Приведенный ниже код генерирует исключение при попытке сохранить

  table_rows.each do |row|
    rec_id = row.content.to_a[0].strip.to_i

    if MyModelName.where(:rec_id => rec_id) == []
      MyModelName.init_from_array(row.content.to_a).save
    end

  end

init_from_array содержит простой код, подобный этому:

def self.init_from_array(array)
  @mymodelname = MyModelName.new
  @mymodelname.field1 = array[0].strip #strip to avoid any empty
  @mymodelname.field2 = array[1].strip
  #and so on...
  @mymodelname
end

Внутри контроллера я просто вызываю этот метод между началом и спасением. MyModelName на данный момент не имеет никакой проверки.

Что я делаю неправильно, чтобы получить такое поведение - он генерирует «не удается выполнить откат, транзакция не активна», но сохраняет запись в базе данных.

редактирование:

вот исключение

SQLite3 :: SQLException: невозможно выполнить откат - ни одна транзакция не активна из /opt/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.3.2/lib/sqlite3/database.rb:97:in закрыть 'из /opt/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.3.2/lib/sqlite3/database.rb:97:inprepare' из / opt / local / lib / ruby ​​/ gems / 1.8 / gems / sqlite3-ruby-1.3.2 / lib / sqlite3 / database.rb: 134: in execute 'из

1 Ответ

0 голосов
/ 24 декабря 2010

Решил проблему.

Проблема была с моим файлом миграции.Все прошло без проблем, но у меня была 1 миграция для создания таблицы, а затем еще 3 миграции, которые добавили поля в эту модель.Я пока не знаю, как и почему, но я удалил все миграции и начал с нуля, и теперь он сохраняет без этой ошибки.

Спасибо

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