Aug*_*sto 6 ruby-on-rails associations
我在Rails 3.2.2中,我有一个Variant类:
class Variant < ActiveRecord::Base
has_one :twin_variant
end
Run Code Online (Sandbox Code Playgroud)
我希望能够将这个类中的两个对象关联成为"双胞胎".我想创建:
v1 = Variant.new
v1.name = "Fantastic variant"
v1.save
Run Code Online (Sandbox Code Playgroud)
然后我想有一个创建双变量的方法:
v2 = Variant.new
v2.name = "Fantastic variant twin"
v2.save
v1.twin_variant = v2
Run Code Online (Sandbox Code Playgroud)
然后这两个对象应该相互关联,这样:
v1.twin_variant
=> v2
v2.twin_variant
=> v1
Run Code Online (Sandbox Code Playgroud)
这可能吗?我该如何建立关联?
dee*_*our 13
鉴于以下模型
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
Run Code Online (Sandbox Code Playgroud)
您可以设置循环关系
v1 = Variant.create(name: "Variant #1")
v2 = Variant.create(name: "Variant #2")
v1.twin_variant = v2
v2.twin_variant = v1
Run Code Online (Sandbox Code Playgroud)
你可以用它来检查
Variant.where(name: "Variant #2").first.twin_variant.name # "Variant #1"
Variant.where(name: "Variant #1").first.twin_variant.name # "Variant #2"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2941 次 |
| 最近记录: |