22

モデルのhas_manyアソシエーションを取得するにはどうすればよいですか?

たとえば、私がこのクラスを持っている場合:

class A < ActiveRecord::Base
  has_many B
  has_many C
end

私はこのような方法をします:

A.get_has_many

そのリターン

[B,C]

出来ますか?ありがとう!

4

3 に答える 3

39

ActiveRecordリフレクションを使用する必要があります。

次に、次のように入力できます。

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

配列を返します

[:B, :C]
于 2010-05-21T10:33:58.530 に答える
3

たとえば、次のことを試すことができます。

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

こんにちはピオグリタゾン、良い一日を!

于 2010-05-21T09:05:36.533 に答える
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
于 2010-05-21T09:56:06.203 に答える