我正在尝试确定如何执行两个简单的任务:
我想从 Gem 的上下文中加载所有 Rails 应用程序的模型。例如,假设 Rails 应用程序是一个博客,并且有作者、帖子和评论。我希望包含的 gem 在不知道它们存在的情况下找到这些模型。
同样,从加载的 gem 的上下文中,我希望我可以使用 rails 模型;例如,我可以在不知道 Authors 存在的情况下调用 Author.first,并且我希望该信息可用于 gem。
所以总结一下这个问题。从 gem 的上下文中,如何加载 rails 项目的所有模型并访问这些模型?
这是我的快速破解:
module ActiveTest
class Base
def listme
::ActiveRecord::Base.subclasses.collect { |type| type.name }.sort
end
end
end
1.9.3-p286 :005 > a = ActiveTest::Base.new
=> #<ActiveTest::Base:0x007f8882bdd460>
1.9.3-p286 :006 > a.listme
NameError: uninitialized constant ActiveRecord