私は、参加しようとしている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_packagesは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
HTHあなたがタイプミスを持っています。あなたのクラス名は複数形で、単数形でなければなりません。つまり、SubmittedPackageです。 Railsは 'submitted_packagess'という名前のテーブルを見つけようとしましたが、それを見つけることはできませんでした(私は、:))。 –
@MarkGukそれはあなたがそこに見るように実際にはうまく動作しています。私が明示的に定義しなかったトップのバージョン:class_nameは、問題のある場所です。 Thxを見てみましょう! – Joe
元の問題コードでは、モデルにも間違った名前があります。 –