2016-06-27 18 views
2
class Foo 
    belongs_to :bar 

どのようなクラスがbelongs_toの関係であるかを知る良い方法はありますか?Railsでbelongs_toクラスの名前を取得する方法は?

この場合、Barです。私はこのための組み込みメソッドがあります確信しているが、回避策として、あなたがFooの属性を見ることができ、その規則を悪用

答えて

1

.klass:(バー)

+0

ハハ。私は良い方法がなければならないことを知っていた。 –

3

だけ Foo.reflect_on_associationを試してみてくださいそのうちの一つはbar_idです:組み込みの方法は

ある

Foo.attribute_names.grep(/.*_id/).map{ |bar| bar[0..-4].classify.safe_constantize } 

更新

Foo.reflect_on_all_associations(:belongs_to).map(&:name) 
+2

この回答のソースが必要な場合:http://apidock.com/rails/ActiveRecord/Reflection/AssociationReflection/klass –

+1

':bar'を使う方法を知っていますか?それが問題のポイントです。 ':bar'を得る方法。 –

+0

どこから始めるべきか分かりましたので、あなたが実際に望むものへの答えを拡大する方が簡単です: 'Foo.reflect_on_all_associations.find_all {| a | a.is_a? ActiveRecord :: Reflection :: BelongsToReflection} .map(&:name) ' – Leito

関連する問題