ruby/rails如何在一个表中添加对同一个模型的多个引用的迁移?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (10)

如何使用引用同一个表的两个字段创建迁移?我有表A和图像。A.image1_id将引用图像,而A.image2_id也会引用图像。只有2张图片,并不是很多。如果我使用

class AddFields < ActiveRecord::Migration
   def change
    change_table(:ticket) do |t|
        t.references :image1_id
        t.references :image2_id
    end
  end
end

我不认为这会起作用,因为它会在最后添加另一个_id,并且可能不会使用“图像”模型。我也想过

change_table(:ticket) do |t|
    t.references :image

我也想加入

create_table :images do |t|
  t.belongs_to :ticket
  t.string :file

change_table(:suppliers) do |t|
  t.references :company
end
提问于
用户回答回答于

可以简单地使用你add_column作为迁移方法来做到这一点,并在你的类中建立适当的关联:

class AddFields < ActiveRecord::Migration
  def change
    add_column :tickets, :image_1_id, :integer
    add_column :tickets, :image_2_id, :integer
  end
end

class Ticket < ActiveRecord::Base
  belongs_to :image_1, :class_name => "Image"
  belongs_to :image_2, :class_name => "Image"
end

class Image < ActiveRecord::Base
  has_many :primary_tickets, :class_name => "Ticket", :foreign_key => "image_1_id"
  has_many :secondary_tickets, :class_name => "Ticket", :foreign_key => "image_2_id"
end

扫码关注云+社区