我有两个要尝试加入的资源 - 通过连接表 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