rails:如何填充为用户提供一组默认记录同时允许他们添加更多的模型

rails: How to populate a model which provides a user with a set of defaults records while allowing them to add more

我希望能够在 Web 程序上创建一个功能来创建检查。检查的检查项目很多。我想用初始数量的项目填充 inspection_items,但允许用户添加或删除任何默认项目。从架构的角度来看,我真的不知道如何有效地完成这项工作。我首先使用 inspection_item 模型并从存储在常量中的哈希创建列表,但这不允许列表动态化。

class InspectionList < ApplicationRecord
belongs_to :workorder


  DEFAULTQUESTIONS = %w[{item_name: "Blablabla"}, 
  {item_name:"Loremipsumboardhordic"}, {item_name: "Satir quajnami grolose"} ]


def initialize(DEFAULTQUESTIONS)
  InspectionList.create(DEFAULTQUESTIONS)
end


end

如果我没理解错的话,你首先需要为Inspection items添加一个table plus模型:

class InspectionItem < ApplicationRecord
  belongs_to :inspection_list
end

class InspectionList < ApplicationRecord
  has_many :inspection_items
end

然后,当向用户呈现新的检查列表时(例如,在 inspection_lists_controller 中的 new 控制器操作中),您可以建立前几个默认检查项目并将它们附加到新检查清单:

@inspection_list = InspectionList.new
@inspection_list.add_default_items

其中 add_default_items 本身构建附加项(我可能会把它放在 InspectionList 模型中),是的,常数是 suitable放置位置:

# app/models/inspection_list.rb
DEFAULT_ITEMS = [{item_name: "Blablabla"}, 
                 {item_name:"Loremipsumboardhordic"}, 
                 {item_name: "Satir quajnami grolose"} ]

def add_default_items
  DEFAULT_ITEMS.each do |item|
    self.inspection_items.build(item)
  end 
end

build方法是documented e.g. here将新建的关联记录(检查项)附加到主记录(检查列表)上