2012-05-04 26 views
0

私は、参加しようとしている2つのリソースを持っています - 結合テーブルSubmittedPackageによるパッケージとリスト。私はRuby 1.9.3-p125とRails 3.2.1とPostgreSQL 9.1.3を使用しています。モデルは次のように見えます。 NameError:初期化されていない定数 - ActiveRecordで許可されていない構文ですか?

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のコンソールでは、私は NameErrorを得続ける:初期化されていない定数リスト:: SubmittedPackage

を、私はそれが動作するドラムSubmittedPackageリソースを交換した場合(これはもちろん、適切なのものが挙げられます作成されたテーブルなど)。

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

これが壊れている理由は何ですか?

ありがとうございます!

更新:回避策として、私は明示的に:リストとパッケージモデルで多くの関係を持つ:class_nameを定義しました。これは少なくとも問題なく動作していますが、それがなぜ始まったのかはまだ分かりません。どのレールや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 
+1

HTHあなたがタイプミスを持っています。あなたのクラス名は複数形で、単数形でなければなりません。つまり、SubmittedPackageです。 Railsは 'submitted_pa​​ckagess'という名前のテーブルを見つけようとしましたが、それを見つけることはできませんでした(私は、:))。 –

+0

@MarkGukそれはあなたがそこに見るように実際にはうまく動作しています。私が明示的に定義しなかったトップのバージョン:class_nameは、問題のある場所です。 Thxを見てみましょう! – Joe

+0

元の問題コードでは、モデルにも間違った名前があります。 –

答えて

1

SubmittedPackageがJoinTableであれば、私はそれが多くのリストを持っている必要がありますね、私はただ、多くのパッケージや多くのsubmitted_pa​​ckagesを見ています。 `にhas_many:submitted_pa​​ckages、:CLASS_NAME => 'SubmittedPackage **の**'`

+0

良いキャッチです。私は何らかの理由で結合表の内容に完全に戸惑いました...修正は回避策の修正とともに上記で行われました。しかし元の問題は説明できないままです! – Joe

関連する問題