2011-09-20 129 views

回答

5
def belongs_to?(a,b) 
    sym = b.to_s.downcase.to_sym 
    a.reflect_on_all_associations(:belongs_to).map(&:name).include?(sym) 
    end 

> belongs_to?(ClazzA,ClazzB) # true 
> belongs_to?(ClazzB,ClazzA) # false 
+0

您可能想要在模型中將其定義爲一個類方法,以便於閱讀:a。ClazzB – zetetic

+0

好極了!非常感謝。 – maxenglander

+0

在我的控制器中,我不得不將第二行更改爲: sym = b.class.name.to_s.downcase.to_sym – alalani

2

試試這個:

def belongs_to? a, b 
    b.reflect_on_all_associations(:belongs_to). 
    any?{|bta| bta.association_class == a} 
end 

注意

這個問題是沒有答案的時候,我開始回答。在完成答案後,我注意到@zeteic發佈的答案。即使對於關聯名稱不映射到模型名稱的情況,此解決方案也可以正常工作,因此我將答案放在此處。

+0

感謝您的回答KandadaBoggu!感謝您的清晰度。 – maxenglander

相關問題