0

結合しようとしているリソースが 2 つあります。結合テーブル SubmittedPackage を介して Package と Listing です。Ruby 1.9.3-p125 と Rails 3.2.1 を PostgreSQL 9.1.3 で使用しています。モデルは次のようになります。

class Package < ActiveRecord::Base
  has_many :submitted_packages
  has_many :listings, :through => :submitted_packages

class Listing < ActiveRecord::Base
  has_many :submitted_packages
  has_many :packages, :through => :submitted_packages

class SubmittedPackages < ActiveRecord::Base
  belongs_to :package
  belongs_to :listing

Rails Console でNameError: uninitialized constant Listing::SubmittedPackageを取得し続けます

SubmittedPackageリソースをDrumに置き換えると機能します (もちろん、これには適切なテーブルの作成などが含まれます)。

:submitted_pa​​ckages は、Rails または ActiveRecord の何かと競合していますか?

これが壊れている理由はありますか?

前もって感謝します!

更新: 回避策として、Listing and Package モデルで has many リレーションシップの :class_name を明示的に定義しました。これで少なくとも機能するようになりましたが、そもそもなぜそれが必要だったのかはまだわかりません。どの Rails または Ruby の命名規則によって破られていました:submitted_packagesか?

class Package < ActiveRecord::Base
  has_many :submitted_packages, :class_name => 'SubmittedPackages'
  has_many :listings, :through => :submitted_packages

class Listing < ActiveRecord::Base
  has_many :submitted_packages, :class_name => 'SubmittedPackages'
  has_many :packages, :through => :submitted_packages

class SubmittedPackages < ActiveRecord::Base
  belongs_to :package
  belongs_to :listing
4

1 に答える 1

1

SubmittedPackageがJoinTableの場合、多くのリストが含まれているはずですが、表示されているのは多くのパッケージと多くのsubmited_pa​​ckagesだけです。

HTH

于 2012-05-04T23:32:04.063 に答える