如何获取 Rails 中 belongs_to 的 class 的名称?

How to get the name of the class that belongs_to in Rails?

class Foo
  belongs_to :bar

找出哪个 class 是 belongs_to 关系的好方法是什么?

本例中为Bar

试试吧 Foo.reflect_on_association(:bar).klass

我确定有一个内置方法可以解决这个问题,但作为一种解决方法,您可以查看 Foo 的属性,利用其中一个是 bar_id 的约定:

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

更新

内置方法是

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