我有两个我想要加入的资源 - 通过连接表SubmittedPackage打包和列出。我正在使用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控制台中,我不断收到 NameError:uninitialized constant Listing :: SubmittedPackage
如果我用 Drum 替换 SubmittedPackage 资源,它将起作用(这当然包括创建适当的表等等)。
是:submitted_packages与Rails或ActiveRecord中的内容冲突了吗?
为什么这会破裂?
提前致谢!
更新:作为一种解决方法,我在清单和包模型中明确定义了: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
答案 0 :(得分:1)
如果SubmittedPackage是JoinTable,我想它应该有很多列表,但我只看到很多包和许多submitted_packages。
HTH