Rails 5有很多通过关联 - 找不到表' team_users'

时间:2016-10-12 05:08:09

标签: associations has-many-through ruby-on-rails-5

当我在Rails 5中生成连接表迁移时,会发生错误

移植

rails g migration CreateJoinTableTeamUser team user

20161011185253_create_join_table_team_user.rb

class CreateJoinTableTeamUser < ActiveRecord::Migration[5.0]
  def change
    create_join_table :teams, :users do |t|
      t.index [:team_id, :user_id]
      t.index [:user_id, :team_id]

      t.timestamps null: false, include_deleted_at: true
      t.userstamps index: true, include_deleter_id: true
    end
  end
end

team.rb

class Team < ApplicationRecord
  has_many :team_user
  has_many :users, through: :team_user
end

user.rb

class User < ApplicationRecord
  has_many :team_user
  has_many :teams, through: :team_user
end

team_user.rb

class TeamUser < ApplicationRecord
  include Userstampable::Stampable

  belongs_to :user
  belongs_to :team

  # validates :user_id, presence: true
  # validates :team_id, presence: true
end

终端 - 错误

2.3.1 :001 > team = Team.first
...
2.3.1 :002 > me = User.first
...
2.3.1 :003 > team.users << me
...
ActiveRecord::StatementInvalid: Could not find table 'team_users'

1 个答案:

答案 0 :(得分:0)

我认为您正在尝试创建一个表,因此最好使用“模型”生成器而不是迁移,因为理想情况下应该使用迁移来更新现有的表模式。

请尝试以下操作:

rails g model team_user user:references team:references

然后

rails db:migrate

希望它对你有所帮助。