

ER図上で親子関係(依存関係)になっているものを、Rubyのソース上で本当にそうなっているのかの解析を行っています。  
しかし、Rubyのソース内の関連付けを行っているモデルの中で、親子関係になっているものの判定方法が分かりません。  
以下のような例で、親子関係を判定することはできるのでしょうか？  
これで分かるのは、リレーションと、モデル間で参照があるかどうかだけかと考えています。

例1：

[code]

    class HogeGroup
      has_many :hoge_data, :class_name => 'HogeData', :foreign_key => 'hoge_id'
    
    class HogeData
      belongs_to :hoge_group, :class_name => 'HogeGroup', :foreign_key => 'hoge_id'
    
[/code]

例2：

[code]

    class TestGroup
      #has_manyの記載なし
    
    class TestData
      belongs_to :test_group, :class_name => 'TestGroup', :foreign_key => 'test_id'
    
[/code]

Rubyのソース上で解析できる方法があれば、ご教示頂けると幸いです。  
宜しくお願いいたします。


CC BY-SA 3.0
2017-11-21T09:17:10.877
39735
2017-11-22T02:28:38.193
26291
question
ruby-on-rails ruby
Rubyでモデルの親子関係を調べたい


`reflect_on_all_associations`メソッドが使えると思います。`ActiveRecord::Reflection::XXXReflection`のインスタンスの配列が返ってきます。

[code]

    HogeGroup.reflect_on_all_associations(:has_many)
      #=> [<ActiveRecord::Reflection::HasManyToReflection>]
    
    HogeData.reflect_on_all_associations(:belongs_to)
      #=> [<ActiveRecord::Reflection::BelongsToReflection>]
    
[/code]

<http://api.rubyonrails.org/classes/ActiveRecord/Reflection/ClassMethods.html#M001861>

<https://stackoverflow.com/questions/2024205/rails-method-to-get-the-
association-name-of-a-model>


CC BY-SA 3.0
2017-11-22T02:28:38.193
39749
2017-11-22T02:28:38.193
9608
39735
answer