2010-05-21 52 views

回答

28

你應該使用ActiveRecord reflections

然後你可以輸入這樣的事情:

A.reflect_on_all_associations.map { |assoc| assoc.name} 

將返回你的陣列

[:B, :C] 
+17

要獲得唯一'has_many'協會,它能夠傳遞一個參數:'A.reflect_on_all_associations(:的has_many).MAP(:名稱)#=> [:B,:C]' – Voyta 2010-05-21 11:08:41

+0

有沒有辦法以反映(即橫向)上的*實例*變量,這些協會已經急切地加載了? – 2012-07-03 20:11:08

+0

Mark Richman:self.class.reflect_on_all_associations ... – stebooks 2013-02-14 01:00:37

2

例如,你可以嘗試:

aux=Array.new 
Page.reflections.each { |key, value| aux << key if value.instance_of?(ActiveRecord::Reflection::AssociationReflection) } 

嗨皮奧斯,有一個愉快的一天!

0

找到的解決:

def self.get_macros(macro) 
    res = Array.new 
    self.reflections.each do |k,v| 
    res << k if v.macro == macro.to_sym 
    end 
    return res 
end 
+0

@ nathanvda的回答是更簡單... – tokland 2012-05-03 20:25:29

相關問題