Given the following model
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
You can set up circular relationships with
v1 = Variant.create(name: "Variant #1") v2 = Variant.create(name: "Variant #2") v1.twin_variant = v2 v2.twin_variant = v1
and you can check it with
Variant.where(name: "Variant #2").first.twin_variant.name # "Variant #1" Variant.where(name: "Variant #1").first.twin_variant.name # "Variant #2"
source share