проблема в ассоциации has_and_belongs_to_many в рельсах - PullRequest
1 голос
/ 06 августа 2020

в настоящее время существует user с has_many project

, но теперь я хочу обновить project has_many user и user has_many project.

, но я получаю сообщение об ошибке - Не удалось найти таблицу «projects_users»

в project.rb

has_and_belongs_to_many :users

user.rb

has_and_belongs_to_many :projects

Сгенерированная миграция

rails g migration CreateProjectsUsersJoinTable

Получение ошибки как -

Не удалось найти таблицу «projects_users»
в строке контроллера с индексом # - @ проекты = current_user.projects

Ответы [ 2 ]

4 голосов
/ 06 августа 2020

я думаю, это может помочь запустить rails g migration create_project_users в таблице project_users

class CreateProjectUsers < ActiveRecord::Migration[6.0]
  def change
    create_table :project_users do |t|
      t.integer :user_id
      t.integer :project_id
    end
  end
end

, затем user.rb

has_many :project_users
has_many :projects, through :project_users

и в project.rb

has_many :project_users
has_many :users, through :project_users

project_user.rb

belongs_to :user
belongs_to :project
1 голос
/ 06 августа 2020

Если ваша версия rails больше 5, вы можете выполнить новую миграцию с помощью create_join_table.

rails g migration CreateJoinTableProjectsUsers project user

Это сгенерирует следующее:

class CreateJoinTableProjectsUsers < ActiveRecord::Migration
  def change
    create_join_table :projects, :users do |t|
      t.index [:project_id, :user_id]
      # t.index [:user_id, :project_id]
    end
  end
end

И в project.rb

has_and_belongs_to_many :users

user.rb

has_and_belongs_to_many :projects
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...