很抱歉,如果已经提出这个问题,但我找不到类似的问题。
使用rails 5.
我有一个双嵌套资源
resources :users do
resources :checklists do
resources :checklist_items do
member do
patch :completed
end
end
end
end
我有
user.rb
user has_one :checklist
checklist.rb
checklist belongs_to :user
我知道如何在命令行中为一个用户创建新的核对清单:
User.checklist.create
现在,我想通过命令行为数据库中的所有现有用户创建一个新的核对表。有点像这个虚构的命令:
User.all.checklist_create
以便每个用户都获得一份清单。我该如何做到这一点?
答案 0 :(得分:1)
这对我有用,但也许有更短的方法来实现它?
User.all.each do |user|
user.create_checklist
end
答案 1 :(得分:0)
Rails和Ruby充满了大量的元编程,如果你所建议的方法实际存在,我也不会感到惊讶。但是,从设计的角度来看,我认为这将是一种矫枉过正。想象一下,如果您有10K +用户,并且您想使用该单个命令为所有10k用户创建票证?每张票的字段怎么样? 因此,为了解决您的问题,您可以考虑采用自己的方式进行选择。
工厂女孩
对于工厂女孩,您有create_list
,build list
等方法,请查看他们的文档以获取更多信息。从他们的名字来看,他们看起来足够直观这些方法可以帮助您创建多个对象的列表,并根据您的工厂结构,您可以在一行中获得所需的内容。
Seed.rb
Rails提供了一个seed.rb文件,您可以在其中添加ruby脚本,该脚本应该用于为您的数据库设置一些默认值。默认情况下,seed.rb文件中有一个示例脚本,您可以将其用作参考来设置所需的结构。
但是你只想使用这个选项,如果你想要的只是测试/虚拟数据来玩唉,你的用例可能会有所不同。但是如果您确实需要这些数据全部用于测试,我建议您遵循TDD方法。希望这会对你有所帮助。