2013-11-14 3 views
0

Я уверен, что это что-то не так с моими классами, но здесь это:рубин Подкласс Ошибка на массив строк

class Transaction < ActiveRecord::Base 
     attr_accessible :transaction_date, :amount, :other_info, :type, :purchase 
end 

require 'csv' 
require_relative '../../app/models/transaction' 
csv_text = File.read('monthly_csvs/pcbanking.csv') 
csv = CSV.parse(csv_text, :headers => false) 
csv.each do |row| 
    puts row[3].to_s 
    Transaction.create!(transaction_date: row[0], amount: row[1], other_info: row[2], type: row[3], purchase: row[4]) 
end 

ОШИБКА:

POS Purchase 
rake aborted! 
Invalid single-table inheritance type: POS Purchase is not a subclass of Transaction 

Pos Покупка является строка [3] элемент и строка.

ответ

1

Rails (или, в частности, ActiveRecord) по умолчанию используется столбец type в модели для реализации Single Table Inheritance (STI). Это метод для реализации нескольких унаследованных моделей, которые сохраняются в одной таблице базы данных.

Как вы используете столбец type в своей модели, Rails рассчитывает, что он будет использоваться для STI. Вы можете теперь или переименовать type колонки к чему-то еще или поручить Rails использовать другой столбец как столбец типа STI, используя это в классе модели (в данном примере к sti_type колонку):

class Transaction < ActiveRecord::Base 
    self.inheritance_column = :sti_type 
end 
Смежные вопросы