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