我有几个深度嵌套的模型,我想为我的数据库做种。模型如下: 每个餐厅有很多菜单。每个菜单都有很多类别。每个类别都有很多餐点。目前,我的种子看起来像这样:
restaurant_seed = [
{
name: "KFC",
address: "Sofia",
description: "Fast food.",
phone_number: "88888888"
}
]
menu_seed = [
{
name: 'Spring menu.',
active: true
},
}
name: 'Winter menu.',
active: false
}
]
category_seed = [
{
name: "Dessert",
available_all_day: false,
age_restriction: false,
category_avatar: File.open(File.join(Rails.root, "app/assets/images/desserts.jpg"))
},
{
name: "Salad",
available_all_day: true,
age_restriction: false,
category_avatar: File.open(File.join(Rails.root, "app/assets/images/salads.jpeg"))
}
]
meal_seed = [
{
name: "Shopska salata",
meal_avatar: File.open(File.join(Rails.root, "app/assets/images/shopska_salad.jpg"))
},
{
name: "Shisha",
meal_avatar: File.open(File.join(Rails.root, "app/assets/images/shisha.jpg"))
}
]
但是,我不知道如何使用该信息实际为数据库播种。这个想法是每家餐厅都会有所有的菜单种子,每家餐厅的每份菜单都会有来自类别种子的每个类别等等。感谢您的任何建议!
最佳答案
写一个方法来遍历所有种子并创建相应的记录。
def setup_restaurants(restaurant_seed, menu_seed, category_seed, meal_seed)
restaurant_seed.each do |r_seed|
restaurant = Restaurant.create(r_seed)
menu_seed.each do |m_seed|
menu = restaurant.menus.create(m_seed)
category_seed.each do |c_seed|
category = menu.categories.create(c_seed)
meal_seed.each do |mm_seed|
category.meals.create(mm_seed)
end
end
end
end
end
关于ruby-on-rails - 在 Ruby on Rails 中播种,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37805645/