我正在尝试使用静态类别(例如Men's / Women's)播种我的数据库,然后有属于这些类别的子类别,但实际上我不知道如何使用数据库种子进行此操作。
我的模型设置如下:
Category.rb
class Category < ActiveRecord::Base
extend FriendlyId
friendly_id :name, use: :slugged
has_many :subcategories
has_many :products ,:through => :subcategories
end
Subcategory.rb
class Subcategory < ActiveRecord::Base
belongs_to :category
has_many :products
end
Product.rb
class Product < ActiveRecord::Base
acts_as_taggable
extend FriendlyId
friendly_id :name, use: :slugged
belongs_to :subcategory
end
我如何编写数据库种子来执行此操作?
答案 0 :(得分:1)
首先想到的是(至少我的)是创建局部变量:
# db/seeds.rb
mens = Category.create(name: "Men's")
womens = Category.create(name: "Women's")
SubCategory.create(name: 'Slacks', category: mens)
SubCategory.create(name: 'Slacks', category: womens)
更好的(除了类别之外不能创建子类别)解决方案是将Model.create
与块一起使用:
Category.create(name: "Men's") do |category|
Subcategory.create(name: 'Slacks', category: category)
end
然后使用rake任务播种:$ rake db:seed