2012-12-14 27 views
6

Rails 3.2.2 yaşıyorum ve ben bir Varyant sınıf var:Öz tutarlılığına "ikiz" has_one dernek

class Variant < ActiveRecord::Base 

    has_one :twin_variant 

end 
ben bu sınıftan iki nesneleri ilişkilendirmek edebilmek istiyorum

için "ikizler oldu ". Ben oluşturmak istiyorum: böylece, sonra 2 nesneler birbirleriyle ilişkili hale gereken

v2 = Variant.new 
v2.name = "Fantastic variant twin" 
v2.save 

v1.twin_variant = v2 

:

v1 = Variant.new 
v1.name = "Fantastic variant" 
v1.save 

Sonra ikiz varyantı oluşturmak için bir yöntem olmasını istiyorum :

v1.twin_variant 
=> v2 

v2.twin_variant 
=> v1 

Bu mümkün mü? Derneği nasıl kurmalıyım?

cevap

13

Sen kurulum

v1 = Variant.create(name: "Variant #1") 
v2 = Variant.create(name: "Variant #2") 

v1.twin_variant = v2 
v2.twin_variant = v1 

ile döngüsel bir ilişki size

Variant.where(name: "Variant #2").first.twin_variant.name # "Variant #1" 
Variant.where(name: "Variant #1").first.twin_variant.name # "Variant #2" 
+0

teşekkür ile kontrol edebilirsiniz aşağıdaki modeli

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 

göz önüne alındığında, inşaat büyük! – Augusto