1

RoRの基本的な問題だと思いますが、hoods_one_providersという新しいテーブルを追加しました。このテーブルには対応するモデルがありません-2つのモデル(プロバイダーとフード)を接続する必要があります。コンソールで呼び出そうとしていますが、代わりに初期化されていない定数を取得しています。

私が走るとき:

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

助けていただければ幸いです。ありがとう

4

2 に答える 2

2

これは、以下のいずれかの場合に発生する可能性があります

  1. 実行中は修正さreload!れるはずです。
  2. コンソールを終了し、次の方法でコンソールを再度実行します。rails c
  3. それぞれのテーブルにモデルファイルが存在することを確認してください。テーブル名がモデルの下にファイルhoods_one_providersがあるはずだと仮定しましょう。hoods_one_providers.rb
于 2021-03-16T06:17:09.933 に答える
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]
于 2013-02-10T13:37:30.467 に答える