結合しようとしているリソースが 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_packages は、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