Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 如何在一个表中添加具有多个引用到同一模型的迁移?的Ruby / Rails大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如何创建具有引用同一个表的两个字段的迁移?我有表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

但我只想要2,不是很多,这似乎不允许从票据中获取图像,如ticket.image1或ticket.image2.

根据本文档http://apidock.com/rails/v3.2.8/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table,我可以找到,t.references似乎也没有任何参数.

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,:foreign_key => "image_2_id"
end

这个博文,Creating Multiple Associations with the Same Table,更详细.

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 如何在一个表中添加具有多个引用到同一模型的迁移?的Ruby / Rails全部内容,希望文章能够帮你解决ruby-on-rails – 如何在一个表中添加具有多个引用到同一模型的迁移?的Ruby / Rails所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。