2013-07-24 4 views
2

Я искал метод получения массива всех атрибутов и ассоциаций модели в модели ActiveRecord. Мне было трудно найти ответ на этот вопрос, поэтому я отправлю свой ответ и посмотрю, есть ли лучшее решение.Rails3 - Как получить все атрибуты и ассоциации модели ActiveRecord?

ответ

2

Чтобы получить все атрибуты

m = Model.new 
m.attributes 

Чтобы получить все модельные ассоциации

Model.reflect_on_all_associations.map{|x| x.class_name}.compact 

Эти ссылки будут предоставлять более подробную информацию How do you discover model attributes in Rails

http://www.funonrails.com/2009/11/how-to-get-all-associted-models-of.html

+0

Обратите внимание, что reflect_on_all_associations.map {| x | x.class_name} получить имя * класса * ассоциации, а не имя самой ассоциации. – ericpeters0n

0

Мое решение:

m = Model.find(id) 
m.attributes.keys.concat(m.reflections.map{|r| r.first.to_s}) 
Смежные вопросы