创建组合表

时间:2014-03-12 23:32:19

标签: ruby-on-rails

我对rails很新。我没有创建普通表的问题,但我想弄清楚如何创建组合表。因此,例如,将有一个运动表和一个团队表。然后我想创建一个表,这是一个超过所有运动队表,有一个运动和一个团队的价值来自相应的表。我是否只是让运动和球队桌子属于整体桌面,或者是否有不同的方式。我该怎么做呢。

1 个答案:

答案 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 ')}"

然后你应该知道一些非常棒的事实