【问题标题】:Rails has_many :through Uninitialized constantRails has_many:通过未初始化的常量
【发布时间】:2015-09-12 01:31:39
【问题描述】:

我正在寻求帮助来调试 Rails has_many :through 关联的问题。我有 3 个模型,PackageVenue 和我的连接表 Packagevenue

package.rb

class Package < ActiveRecord::Base
    has_many :packagevenues
    has_many :venues, through: :packagevenues
end

venue.rb

class Venue < ActiveRecord::Base
    has_many :packagevenues
    has_many :packages, through: :packagevenues
end

packagevenue.rb

class Packagevenue < ActiveRecord::Base
    belongs_to :venues
    belongs_to :packages
end

packagevenues 表的架构

 create_table "packagevenues", force: :cascade do |t|
    t.integer  "package_id"
    t.integer  "venue_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

测试用例:

  Packagevenue.first
  Packagevenue Load (0.3ms)  SELECT  "packagevenues".* FROM "packagevenues"  ORDER BY "packagevenues"."id" ASC LIMIT 1
=> #<Packagevenue:0x007fac12209750> {
          :id => 1,
  :package_id => 2,
    :venue_id => 1,
.....
}   

[11] webapp »  p=Package.find(2)
  Package Load (0.2ms)  SELECT  "packages".* FROM "packages" WHERE "packages"."id" = $1 LIMIT 1  [["id", 2]]
=> #<Package:0x007fac14eae738> {
          :id => 2,
.....
}

[12] webapp »  v=Venue.find(1)
  Venue Load (0.2ms)  SELECT  "venues".* FROM "venues" WHERE "venues"."id" = $1 LIMIT 1  [["id", 1]]
=> #<Venue:0x007fac1222e488> {
           :id => 1,
.....
}

[13] webapp »  v.packages
NameError: uninitialized constant Venue::Packages
.....

[14] webapp »  p.venues
NameError: uninitialized constant Package::Venues
.....

我认为我已正确完成所有设置,有人可以告诉我为什么不断弹出未初始化常量错误吗?

【问题讨论】:

  • 我不确定您的错误,但您的 Packagevenue belongs_to 语句应该是单数,而不是复数。例如,belongs_to :venue
  • 哇@MarcBaumbach,你搞定了……那张单曲s 只是吸走了我生命中的几个小时。谢谢!请添加它作为答案,我会接受它

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord


【解决方案1】:

可能的原因是您的Packagevenue 模型中有多个belongs_to 符号。你希望它们像这样单数:

class Packagevenue < ActiveRecord::Base
    belongs_to :venue
    belongs_to :package
end

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多