未初始化的常量,但表存在

时间:2013-02-10 13:35:52

标签: ruby-on-rails

我确信这是RoR中的一个基本问题,但我添加了一个名为hooods_one_providers的新表。该表没有相应的模型 - 它应该连接两个模型 - 提供商和引擎盖。我试图在控制台中调用它,但改为 - 未初始化的常量。

当我跑步时:

ActiveRecord::Base.connection.tables
=> ["schema_migrations", "users", "roles", "users_roles", "providers", "food_items", "food_items_users", "feedbacks", "addresses", "carts", "link_carts", "hoods", "drink_items", "addons_ons", "addons_nears", "customize_foods", "addresses_hoods", "hoods_one_providers"]

我可以看到桌子,但我无法从中读到。当我运行hooods_one_providers时,我得到了未初始化的常量错误:

NameError: uninitialized constant HoodsOneProvider
    from (irb):14
    from /home/ido/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:47:in `start'
    from /home/ido/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:8:in `start'
    from /home/ido/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

在模型提供者中我有:

has_and_belongs_to_many :hoods_one, class_name: 'HoodsOne'

在模特罩中,我有:

has_and_belongs_to_many :providers

将不胜感激任何帮助。 感谢

2 个答案:

答案 0 :(得分:1)

如果您在控制台运行时添加了表,则控制台已经缓存了这些类。运行reload!应该可以解决问题,但如果没有,则应重新启动控制台。

更新:

您正在使用has_and_belongs_to_many,需要您手动创建联接表。

更新:创建联接表

创建一个包含以下内容的迁移来创建连接表。 id: false选项告诉它不要创建id

create_table :hoods_ones_providers, id: false do |t|
  t.references :hoods_one, :provider
end

add_index :hoods_ones_providers, [:hoods_one_id, :provider_id]

答案 1 :(得分:0)

以下任何一种情况都可能发生这种情况

  1. 运行 reload! 应该可以解决。
  2. 退出控制台并再次运行控制台rails c
  3. 确保相应表的模型文件存在。假设您的表名是 hoods_one_providers,那么模型下应该有 hoods_one_providers.rb 文件。