Взаимосвязи модели

#ruby-on-rails #ruby

#ruby-on-rails #ruby

Вопрос:

Как я могу получить все отношения для модели. Т.е. у меня есть User модель:

 class User < AR::Base
  has_many :messages, :foreign_key => 'author'
  has_many :posts
  belongs_to :role
end
  

Итак, как я могу узнать, какие отношения есть у User модели? И foreign_keys, если они представлены.

Ответ №1:

 User.reflect_on_all_associations.each do |assoc|
  puts "#{assoc.macro} #{assoc.name}"
end
  

Выходные данные:

 has_many messages
has_many posts
belongs_to role
  

reflect_on_all_associations Метод возвращает массив объектов макроотражения. Они также поддерживают другие методы для запроса хэша параметров каждой ассоциации и других полезных вещей.