我为我正在使用的应用程序创建了一堆模型,我想使用seeds.rb文件播种它们。问题是,我已经在另一个模型中嵌套了一个模型的创建(不知道怎么说),这样当创建“Animal”时,它应该自动创建一组“Packages”。
为了说明,这是在我的animal.rb文件中(细节不重要 - 它只是根据输入的动物数据构建一组包):
after_create :create_packages
def create_packages
@cut_list = Cut.where(:animal_type => self.animal_type)
@cut_list.each do |c|
Package.create!(:animal_id => self.id, :cut_id => c.id,
:original => (self.weight * (c.percent)/100) / c.package_weight,
:left => (self.weight * (c.percent)/100) / c.package_weight)
end
end
换句话说,属于动物的包在创建动物时会自动创建 - 如果动物是在我的应用程序上创建的。然而,有了种子,就这样做了:
Animal.create(
:name => 'Donald Trump',
:animal_type => "Pig",
:breed => "Hungarian",
:weight => 800,
:farm => "The Piggie Farm",
:photo => "NA"
)
没有构建相关的包,因为我已经在我的动物显示页面中构建了包的显示,如果我重置数据库并运行animals /#页面,我收到一个错误,表明没有包存在他们要显示的属性。
有没有办法让种子数据自动生成其关联数据(即,字面上调用我的create方法并遵循after_create命令),这样我就不必为所有包制作种子数据应该自动生成?
感谢。