问题
For example I have
class Order < ActiveRecord::Base
has_many :shippings
has_one :contact_information
belongs_to :shop
end
How to get an array of associated objects from Order. For example
Order.associations
# [:shipping, :contact_information, :shop]
回答1:
Order.reflect_on_all_associations.map(&:class_name)
You can pass a type of relation as a parameter:
Order.reflect_on_all_associations(:has_one)
Read about ActiveRecord::Reflection::ClassMethods
EDIT
Just realised, you've asked about object's associated models.
So, having what I've already showed, you can simply do something along the following lines:
@some_order = Order.first
associated_models = @some_order.class.reflect_on_all_associations.map(&:class_name)
来源:https://stackoverflow.com/questions/27016957/how-to-get-all-the-associated-models-from-activerecord-object