2012-01-06 5 views
0
class A 
has_many :c 

class B 
has_many :c 

class C 
belongs_to :a 
belongs_to :b 

Когда у меня есть экземпляр C, его родители могут быть A или B, но я не знаю, впереди времени, которое он есть. Есть ли простой способ использовать Rails-ассоциацию для доступа к родительскому объекту, какой бы он ни был?Rails 3 доступа к родителю ребенка записи

ответ

1

Есть несколько способов, вы можете сделать это, в том числе полиморфизм, но, пожалуй, самый простой способ заключается в следующем:

class C 
    belongs_to :a 
    belongs_to :b 

    def parent 
    a || b 
    end 
end 

# Usage: 
C.new.parent # => nil 

a1 = A.new 
c1 = a1.c.create 
c1.parent # => #<A:...> 

b1 = B.new 
c2 = b1.c.create 
c2.parent # => #<B:...> 
+0

Это работает, спасибо за быстрый ответ. – Bob

Смежные вопросы