1

Activerecord (postgresql データベース上) を使用して、このプログラムはテーブル「cars」と「car_parts」の間で単純な内部結合を行う必要があります。両方のテーブルが db に存在し、データが入力され、キーはアクティブ レコードの規則に従って命名されます (つまり、両方のテーブルのプライマリ キーは「id」と命名され、「cars」にリンクする「car_parts」の外部キーは「car_id」と命名されます)。 )。Activerecord で「include」と「join」を使用して 2 つの方法を試しましたが、残念ながら両方とも以下のメッセージで失敗しました。どんな助けでも感謝します、ありがとう! 私のプログラム:

require 'active_record'

ActiveRecord::Base.establish_connection(
    # details left out
)

class Car < ActiveRecord::Base
  has_many :car_parts
end

class Car_Part < ActiveRecord::Base
  belongs_to :car
end

results2 = Car.joins(:car_parts)
results2.each{|row|  puts row.id}

results3 = Car.find :all, :include => [:car_parts]
results3.each{|row|  puts row.id}

results2 と results3 の両方で、次のエラー メッセージが表示されます。 `compute_type' 内: 初期化されていない定数 Car::CarPart (NameError)"

4

1 に答える 1

3

命名規則を混ぜています。:car_partsは、CarPartと呼ばれるクラスを参照しますが、Car_Partと呼びます。名前をCarPartに変更してみてください。(そして次の問題を受け入れる!:-))

Active Recordは、単語のキャメルケース部分を1つのアンダースコアに変換する必要があると考えています。

于 2012-11-03T13:44:55.857 に答える