RAILS:如何获得模型的has_many关联

Pio*_*ioz 18 ruby ruby-on-rails has-many

我如何获得模型的has_many关联?

例如,如果我有这个类:

class A < ActiveRecord::Base
  has_many B
  has_many C
end
Run Code Online (Sandbox Code Playgroud)

我会这样的方法:

A.get_has_many
Run Code Online (Sandbox Code Playgroud)

那回归

[B,C]
Run Code Online (Sandbox Code Playgroud)

可能吗?谢谢!

nat*_*vda 35

您应该使用ActiveRecord 反射.

然后你可以输入这样的东西:

A.reflect_on_all_associations.map { |assoc| assoc.name}
Run Code Online (Sandbox Code Playgroud)

这会返回你的数组

[:B, :C]
Run Code Online (Sandbox Code Playgroud)

  • 为了只获得`has_many`关联,可以传递一个参数:`A.reflect_on_all_associations(:has_many).map(&:name)#=> [:B,:C]` (19认同)