Rails 3访问子记录的父级

时间:2012-01-06 22:42:56

标签: ruby-on-rails ruby-on-rails-3 activerecord

class A
 has_many :c

class B
 has_many :c

class C
 belongs_to :a
 belongs_to :b

当我有C的实例时,其父级可以是AB,但我不知道它是什么时候。有没有一种简单的方法可以使用Rails关联来访问父项,无论它是什么?

1 个答案:

答案 0 :(得分: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:...>