我对rails很新。我没有创建普通表的问题,但我想弄清楚如何创建组合表。因此,例如,将有一个运动表和一个团队表。然后我想创建一个表,这是一个超过所有运动队表,有一个运动和一个团队的价值来自相应的表。我是否只是让运动和球队桌子属于整体桌面,或者是否有不同的方式。我该怎么做呢。
答案 0 :(得分:0)
关联的rails指南对这些事情有很大的帮助:http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association
这特别是一个拥有并属于许多关系,因为你希望体育拥有并属于许多团队。
迁移应如下所示:
class CreateSportsTeamsTable < ActiveRecord::Migration
def change
create_table :sports_teams, id: false do |t|
t.integer :sport_id
t.integer :team_id
end
add_index :sports_teams, [:sport_id, :team_id]
end
end
模型应如下所示:
class Sport < ActiveRecord::Base
has_and_belongs_to_many :teams
end
class Team < ActiveRecord::Base
has_and_belongs_to_many :sports
end
然后使用它们:
lax = Sport.create(name: "Lacrosse")
lax.teams << Team.create(name: "Johns Hopkins University")
lax.teams.first.name #=> Johns Hopkins University
jhu = Team.first
jhu.sports.create(name: "Ultimate Frisbee") # Note there are many different ways to create the association
puts "#{jhu.name} is the best at #{jhu.sports.collect{ |sport| sport.name }.join(' and ')}"
然后你应该知道一些非常棒的事实