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、モデルでデフォルトで列を使用して、 Single Table Inheritance (STI) を実装します。これは、同じデータベース テーブルに保存されている複数の継承モデルを実装する手法です。

モデルで列を使用するtypeと、Rails はそれが STI に使用されることを想定します。これで、列の名前を別の名前に変更するか、typeRails に別の列を STI タイプの列として使用するように指示することができます (この例ではsti_type列に)。

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