We all use ActiveRecord Reflection on the fly while programming, since we declare all the relations in the model and we are considering it as obvious.
i tried to search and see if there is a way to find those reflections and to alter it in runtime.
Model.reflections
i found this collection which contains all the information about the current model reflections.
for example.
- .macro: this will return the type of the current reflection (:has_many, etc..)
- .primary_key_name: the reflection primary key
- .options: the reflection SQL join options
- etc. etc.
for example, the following code will show me all the reflections for a model named Article:
- >> y Article.reflections.values.collect {|e| e.macro.to_s + " => " + e.primary_key_name.to_s }
- ---
- - has_many => taggee_id
- - belongs_to => layout_id
- - has_many => article_id
- - has_one => subject_id
- - belongs_to => user_id
- - has_many => taggee_id
- => nil