我怎樣才能得到一個模型的has_many關聯?扶手:如何獲得一個模型的has_many關聯
例如,如果我有這個類:
class A < ActiveRecord::Base
has_many B
has_many C
end
我想這樣的方法:
A.get_has_many
返回
[B,C]
這可能嗎?謝謝!
我怎樣才能得到一個模型的has_many關聯?扶手:如何獲得一個模型的has_many關聯
例如,如果我有這個類:
class A < ActiveRecord::Base
has_many B
has_many C
end
我想這樣的方法:
A.get_has_many
返回
[B,C]
這可能嗎?謝謝!
你應該使用ActiveRecord reflections。
然後你可以輸入這樣的事情:
A.reflect_on_all_associations.map { |assoc| assoc.name}
將返回你的陣列
[:B, :C]
例如,你可以嘗試:
aux=Array.new
Page.reflections.each { |key, value| aux << key if value.instance_of?(ActiveRecord::Reflection::AssociationReflection) }
嗨皮奧斯,有一個愉快的一天!
找到的解決:
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
@ nathanvda的回答是更簡單... – tokland 2012-05-03 20:25:29
要獲得唯一'has_many'協會,它能夠傳遞一個參數:'A.reflect_on_all_associations(:的has_many).MAP(:名稱)#=> [:B,:C]' – Voyta 2010-05-21 11:08:41
有沒有辦法以反映(即橫向)上的*實例*變量,這些協會已經急切地加載了? – 2012-07-03 20:11:08
Mark Richman:self.class.reflect_on_all_associations ... – stebooks 2013-02-14 01:00:37