gpt4 book ai didi

ruby-on-rails - self 参照 “twin” has_one关联

转载 作者:行者123 更新时间:2023-12-04 13:33:21 26 4
gpt4 key购买 nike

我在Rails 3.2.2中,并且有一个Variant类:

class Variant < ActiveRecord::Base

has_one :twin_variant

end

我希望能够将此类中的两个对象关联为“双胞胎”。
我想创建:
v1 = Variant.new
v1.name = "Fantastic variant"
v1.save

然后,我想有一种方法来创建一个孪生变体:
v2 = Variant.new
v2.name = "Fantastic variant twin"
v2.save

v1.twin_variant = v2

然后,这两个对象应彼此关联,以便:
v1.twin_variant
=> v2

v2.twin_variant
=> v1

这可能吗?我应该如何建立协会?

最佳答案

给定以下模型

class Variant < ActiveRecord::Base
attr_accessible :name, :variant_id

has_one :twin_variant, class_name: "Variant", foreign_key: :variant_id
belongs_to :twin, class_name: "Variant", foreign_key: :variant_id
end

您可以使用以下方式设置循环关系
v1 = Variant.create(name: "Variant #1")
v2 = Variant.create(name: "Variant #2")

v1.twin_variant = v2
v2.twin_variant = v1

你可以用
Variant.where(name: "Variant #2").first.twin_variant.name # "Variant #1"
Variant.where(name: "Variant #1").first.twin_variant.name # "Variant #2"

关于ruby-on-rails - self 参照 “twin” has_one关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13877237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com