0

誤ってモデルの1つに複数形の名前を付けたため、両方の名前を手動で変更しました。

projects_users.rb -> projects_user.rb

...と...

class ProjectsUsers < ActiveRecord::Base   ->    class ProjectsUser < ActiveRecord::Base

...および移行を伴うテーブル名。

今、私は私に言っているエラーを受け取ります:

Could not find table 'projects_users'

これはデータベースの古い名前であり、コード内でこの名前を参照している場所が見つからないため、これは奇妙なことです。

テーブルprojects_userを使用するコントローラーはプロジェクトコントローラーであり、エラーは次のことを示しています(3行目)。

1.   def edit
2.     @project = Project.find(params[:id])
3.     @members = ProjectsUser.where(:project_id => params[:id])
4.   end

何が間違っている可能性がありますか?どこを見ればいいですか?

Schema.rbは、このテーブルに関して私が言えることから正しいです。

create_table "projects_user", :force => true do |t|
  t.integer "project_id"
  t.integer "user_id"
end

add_index "projects_user", ["project_id", "user_id"], :name => "index_projects_users_on_project_id_and_user_id"
4

1 に答える 1

3

モデルは単数形である必要がありますが、データベーステーブルは複数形である必要があります。スキーマは、データベーステーブルが特異(projects_user)になることを示しています。

したがって、ProjectsUserモデルにはprojects_usersデータベースに対応するテーブルが必要です。

于 2013-02-11T21:08:02.543 に答える