将一个模型与两个不同的模型相关联?

时间:2011-01-15 08:59:52

标签: ruby-on-rails ruby

嘿伙计们。我正在尝试建立这个Picture Battle网站,(你选择了你喜欢的图片),我有两个模型。图片和战斗。

所以每张照片都有很多战斗,但每场战斗属于两张照片。我如何联想呢......我在想像“belongs_to_many”,但显然不存在。

2 个答案:

答案 0 :(得分:2)

从我看到的情况可以通过使用has_and_belongs_to_many关联

轻松完成

如果您需要将关系模型作为独立实体使用,则应设置has_many :through关系。如果您不需要对关系模型执行任何操作(可能是这种情况),则设置has_and_belongs_to_many关系可能更简单

这是你如何做HABTM:

class Picture < ActiveRecord::Base
  has_and_belongs_to_many :battles
end

class Battle < ActiveRecord::Base
  has_and_belongs_to_many :pictures
end

然后您可以致电picture.battlesbattle.pictures

您还需要创建一个类似于此内容的新迁移

class CreateBattlesPicturesJoinTable < ActiveRecord::Migration
  def self.up
    create_table :battles_pictures, :id => false do |t|
      t.integer :battle_id
      t.integer :picture_id
    end
  end

  def self.down
    drop_table :battles_pictures
  end
end

更多信息here

答案 1 :(得分:0)

这是一个多对多关联。您可以通过连接模型实现它。查看API文档中的has_many