Натолкнулся на это сообщение об ошибке во время разработки сегодня вечером: SQLite3::BusyException: database is locked:
У меня есть две модели:
- Подкасты имеют много треков
- Треки принадлежат Подкастам.
- Файлы подкастов размещены на mixcloud .
Чтобы создать подкаст:
- пользователь отправляет URL для подкаста на mixcloud
- rails app получает json feed, связанный с url
- json используется для установки атрибутов (заголовок, изображение и т. Д.) Для нового объекта подкаста
Я пытаюсь, чтобы мое приложение rails использовало тот факт, что канал json также детализирует имена (и исполнителей) треков, которые принадлежат этому подкасту.
Я думал, что следующий метод before_validation автоматически создаст все связанные дорожки при каждом создании нового подкаста.
class Podcast < ActiveRecord::Base
attr_accessible :mixcloud_url, :lots, :of, :other, :attrs
has_many :tracks
before_validation :create_tracks
def create_tracks
json = Hashie::Mash.new HTTParty.get(self.json_url)
json.sections.each do |section|
if section.section_type=="track"
Track.create(:name=>section.track.name, :podcast_id=>self.id)
end
end
end
end
Как я могу обойти это? Похоже, что rails (или sqlite3) не любит, когда я создаю новые экземпляры связанной модели таким образом. Как еще я могу это сделать? Я подозреваю, что это такая же проблема с Rails, как и с sqlite3. Я могу выложить больше кода, если это поможет.