Ruby on rails 查找Rails应用程序中包含书面记录的模型

Ruby on rails 查找Rails应用程序中包含书面记录的模型,ruby-on-rails,ruby-on-rails-4,paper-trail-gem,Ruby On Rails,Ruby On Rails 4,Paper Trail Gem,我正在Rails中实现一个表单来搜索以前版本的记录- 使用PaperTrail gem实现版本控制。表单将包含对象类型(即模型)的下拉菜单,因此我需要包含PaperTrail的模型名称数组,该数组将来可能会更改,因此我希望避免硬编码,以填充选择值。不幸的是,到目前为止我还没有成功;我在书面文件中找不到任何东西,也没有对所有的协会都不起作用进行反思 任何建议都将不胜感激。我在发布后不久就找到了解决方案。我迭代了ActiveRecord::Base的后代,这将是适用于Rails 5应用程序的Appl

我正在Rails中实现一个表单来搜索以前版本的记录- 使用PaperTrail gem实现版本控制。表单将包含对象类型(即模型)的下拉菜单,因此我需要包含PaperTrail的模型名称数组,该数组将来可能会更改,因此我希望避免硬编码,以填充选择值。不幸的是,到目前为止我还没有成功;我在书面文件中找不到任何东西,也没有对所有的协会都不起作用进行反思


任何建议都将不胜感激。

我在发布后不久就找到了解决方案。我迭代了ActiveRecord::Base的后代,这将是适用于Rails 5应用程序的ApplicationRecord,所有模型都继承自reduce,并使用PaperTrail中包含的辅助函数,即:paper_trail.enabled

ActiveRecord::Base.descendants.reduce([]) do |arr, model| 
  model.paper_trail.enabled? ? arr.push(model.name) : arr
end

确保在调用子体之前加载了所有模型。在开发中,您可以调用::Rails.application.eager\u load!。在生产环境中,默认情况下应启用即时加载。