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 Purchase 是 row[3] 元素并且是一个字符串。

4

1 回答 1

1

Rails(或者更具体地说是 ActiveRecord)type默认使用模型中的列来实现单表继承(STI)。这是一种实现多个继承模型的技术,这些模型保存在同一个数据库表中。

当您type在模型中使用该列时,Rails 期望它用于 STI。您现在可以将您的type列重命名为其他名称,或者通过在模型类中使用它来指示 Rails 使用另一列作为 STI 类型列(在此示例中为sti_type列):

class Transaction < ActiveRecord::Base
  self.inheritance_column = :sti_type
end
于 2013-11-14T15:06:06.527 回答