当我在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'
答案 0 :(得分:0)
我认为您正在尝试创建一个表,因此最好使用“模型”生成器而不是迁移,因为理想情况下应该使用迁移来更新现有的表模式。
请尝试以下操作:
rails g model team_user user:references team:references
然后
rails db:migrate
希望它对你有所帮助。