我想在运行时找到ActiveRecord类的关联...
我们假设我有以下内容:
class Person < ActiveRecord::Base
has_many :chairs
has_many :pens
end
class Chair < ActiveRecord::Base
belongs_to :person
end
class Pen < ActiveRecord::Base
belongs_to :person
end
如何在运行时发现Person“有很多”椅子和笔,反之亦然?我正在寻找一个返回字符串数组的方法(如果存在这样的方法)。即
Person.has_many_assocations
将返回:
["chairs", "pens"]
和
Pen.belongs_to_associations
将返回:
["person"]
我错过了这样的方法吗?
感谢您的帮助。
答案 0 :(得分:26)
我认为ActiveRecord::Reflection课程可能就是你要找的。来自文档:
Account.reflect_on_all_associations # returns an array of all associations
Account.reflect_on_all_associations(:has_many) # returns an array of all has_many associations
答案 1 :(得分:0)
做运行时听起来很傻。你到底想要达到什么目的?我认为无论你的问题是什么,都有一个简单且更常用的解决方案。
如果必须,我会使用TheModel.read_inheritable_attribute(:reflections)
。