Я полагаю, что проблема заключается в том, что Ruport требует гем PDF :: Writer, который, в свою очередь, требует гем Transaction :: Simple, который определяет модуль Transaction.
Конечно, в ActiveRecord есть метод #transaction, но я не думаю, что в Rails есть модуль или класс Transaction. Я буду счастлив, что меня исправят.
Пространство имен обычно является лучшей практикой для избежания конфликтов имен, подобных этому. Например.
module Account
class Transaction < ActiveRecord::Base
....
end
end
Однако модели ActiveRecord с пространством имен могут вызывать другие проблемы.
Как бы много времени это ни занимало, лучше всего переименовать модель транзакции.
Вы все еще можете сохранить свою существующую таблицу базы данных транзакций, если хотите, поэтому ваши миграции не нужно менять, поместив self.table_name = "transactions"
внутри вашей модели.
Ваши ассоциации с другими моделями также можно по-прежнему называть «транзакциями», указав имя класса в вашем вызове ассоциации. Э.Г.
class User < ActiveRecord::Base
has_many :transactions, :class_name => "AccountTransaction"
end
Эти два предложения могут или не могут сэкономить вам время.