使用Rails应用程序

时间:2017-05-17 20:23:01

标签: ruby-on-rails ruby-on-rails-4 paper-trail-gem

我正在Rails中实现一个表单来搜索以前版本的记录 -  使用PaperTrail gem实现版本控制。表单将包含对象类型的下拉菜单(即模型),因此我需要一个包含PaperTrail的模型名称数组,这可能在将来发生变化,因此我想避免硬编码,以填充选择值。不幸的是,到目前为止我还没有成功;我在PaperTrail文档中找不到任何内容,#reflect_on_all_associations无效。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

发布后不久我找到了解决方案。我迭代了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