如何解决如何为具有相同关系的两个外键的模型编写关联?
我一直在回想自己没有解决的问题。我有一个context.resources.assets
表,其中有两列用于shipments
,即addresses
和to_address_id
。
看了一个相关的问题(Same Model for Two belongs_to Associations migration)之后,我仍然感到困惑。到目前为止,这是我的工作。我还没有运行迁移。我正在努力解决这个问题,然后再花一两个小时。非常感谢您的帮助。
from_address_id
解决方法
如果我理解正确,那么您想在运输中添加起源和目的地地址吗?
在这种情况下:
如果您要创建迁移来创建关系
class AddOriginAndDestinyAddressToShipment < ActiveRecord::Migration[6.0]
def change
add_reference :shipments,:from_address,foreign_key: { to_table: :addresses }
add_reference :shipments,:to_address,foreign_key: { to_table: :addresses }
end
end
如果要创建具有关系的模型
class CreateShipments < ActiveRecord::Migration[6.0]
def change
create_table :shipments do |t|
t.datetime :deadline
t.references :from_address,null: false,foreign_key: { to_table: :addresses }
t.references :to_address,foreign_key: { to_table: :addresses }
t.timestamps
end
end
end
运输模型必须是这样的
class Shipment < ApplicationRecord
belongs_to :to_address,class_name: 'Address'
belongs_to :from_address,class_name: 'Address'
end
,
我不需要迁移,因为外键已经到位。我尝试过的那个没有用,strong_migrations
宝石在抱怨。我只需要将其正确连接即可。
我想展示一下保存混乱的方式,因此我可以输入shipment.to_address
或shipment.address_to
并获得相同的结果。谢谢。
class Shipment < ApplicationRecord
belongs_to :address_from,class_name: 'Address',foreign_key: :from_address_id
belongs_to :from_address,foreign_key: :from_address_id
belongs_to :address_to,foreign_key: :to_address_id
belongs_to :to_address,foreign_key: :to_address_id
end
class Address < ApplicationRecord
has_many :shipments
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。