Ruby on Rails 3:has_and_belongs_to_many两个不同的模型

时间:2012-07-25 01:04:55

标签: ruby-on-rails associations

我有两个型号;团队和项目。我尝试创建的应用程序允许团队创建一个新项目。有时,团队可以与另一个团队进行联合项目。

那么我应该在它们之间使用的正确关联是什么? 现在,我有

team.rb

has_many :projects

project.rb

belongs_to :team

我不确定“has_and_belongs_to_many”关联是否会发生,因为RoR guide使用了两个模型加上弱模型

1 个答案:

答案 0 :(得分:0)

如果你也创建一个如下所示的连接表,你可以将has_and_belongs_to_many关联用于两个模型:

class AddTeamsProjectsJoinTable < ActiveRecord::Migration
  def self.up
    create_table :teams_projects, :id => false do |t|
    t.integer :teams_id
    t.integer :projects_id
  end
end

  def self.down
    drop_table :teams_projects
  end
end

然后在你的模特中:

team.rb

has_and_belongs_to_many :projects

project.rb

has_and_belongs_to_many :teams

然后,您可以使用@ team.projects访问一个团队的所有项目,或使用@ project.teams访问一个项目的所有团队