首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自指“孪生”has_one关联

自指“孪生”has_one关联
EN

Stack Overflow用户
提问于 2012-12-14 18:53:02
回答 1查看 3.1K关注 0票数 6

我在Rails 3.2.2中,我有一个变体类:

代码语言:javascript
复制
class Variant < ActiveRecord::Base

   has_one :twin_variant

end

我希望能够将这个类中的两个对象关联起来,成为“双胞胎”。我想创建:

代码语言:javascript
复制
v1 = Variant.new
v1.name = "Fantastic variant"
v1.save

然后我希望有一个方法来创建一个双胞胎变体:

代码语言:javascript
复制
v2 = Variant.new
v2.name = "Fantastic variant twin"
v2.save

v1.twin_variant = v2

然后,这两个对象应该相互关联,以便:

代码语言:javascript
复制
v1.twin_variant
=> v2

v2.twin_variant
=> v1

这个是可能的吗?我应该如何建立关联?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-14 19:30:53

给定以下模型

代码语言:javascript
复制
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

您可以使用以下命令设置循环关系

代码语言:javascript
复制
v1 = Variant.create(name: "Variant #1")
v2 = Variant.create(name: "Variant #2")

v1.twin_variant = v2
v2.twin_variant = v1

您可以使用以下命令进行检查

代码语言:javascript
复制
Variant.where(name: "Variant #2").first.twin_variant.name # "Variant #1"
Variant.where(name: "Variant #1").first.twin_variant.name # "Variant #2"
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13877237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档