Как я могу заполнить модель активной записи (и ее ассоциации) из загруженного файла - PullRequest
0 голосов
/ 29 октября 2010

У меня есть приложение rails, где я хотел бы заполнить поля и ассоциации модели с помощью загрузки файла. Пользователю предоставляется форма с элементом ввода загрузки файла, затем после нажатия кнопки отправки приложение rails анализирует файл и использует его для построения ряда других моделей.

Упрощенный пример будет выглядеть следующим образом (обратите внимание, что для краткости для загрузки файла используется скрепка):

class Parent < ActiveRecord::Base
    has_many :children, :class_name => 'Child'

    has_attached_file :attachment

    after_initialize do |parent|
      File.open(attachment.path) do |file|
        process(file)
      end
    end

    private

    def process(attachment_file)
      # create some new children using the attachment, perhaps this?
      attachment_file.each_line |line|
        # note that the children can either be new or existing.
        self.children << Child.find_or_initialize_by_message(:message => line)
      end
    end
end

class Child < ActiveRecord::Base
    belongs_to :parent
end

Но моя проблема в том, что когда я сохраняю свой родительский объект, это дети не сохраняют. (Я использую Rails 2.3.10 и Ruby 1.8.7)

Что странно, так это то, что он работает с использованием Rails 2.3.4, но не в какой-либо версии после этого. У кого-нибудь есть хорошие предложения о том, что я могу делать неправильно? Или лучший способ добиться того же?

Заранее спасибо за помощь - это сводит меня с ума!

1 Ответ

0 голосов
/ 29 октября 2010

Попробуйте вот так!

attachment_file.each_line |line|
    # note that the children can either be new or existing.
    self.children << Child.find_or_initialize_by_message(:message => line)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...