如何从ActiveRecord对象获取所有关联的模型?

时间:2014-11-19 12:34:20

标签: ruby-on-rails ruby-on-rails-4

例如我有

class Order < ActiveRecord::Base
  has_many :shippings
  has_one :contact_information
  belongs_to :shop
end

如何从Order获取关联对象数组。例如

Order.associations
# [:shipping, :contact_information, :shop]

1 个答案:

答案 0 :(得分:5)

Order.reflect_on_all_associations.map(&:class_name)

您可以将一种关系作为参数传递: Order.reflect_on_all_associations(:has_one)

了解ActiveRecord::Reflection::ClassMethods

修改

刚才意识到,你已经问过对象的关联模型了。

所以,拥有我已经展示过的东西,你可以简单地按照以下几点做点什么:

@some_order = Order.first
associated_models = @some_order.class.reflect_on_all_associations.map(&:class_name)