如何在保存新的主对象后自动创建多个关联对象?
例如
在 Rails 4 中,我有三个对象:Businesses、Budgets和Categories。
#app/models/business.rb
class Business < ActiveRecord::Base
#attrs id, name
has_many :budgets
end
#app/models/budget.rb
class Budget < ActiveRecord::Base
#attrs id, business_id, department_id, value
belongs_to :business
belongs_to :category
end
#app/models/category.rb
class Category < ActiveRecord::Base
#attrs id, name
has_many :budgets
end
当我创建一个新业务时,在保存新业务后,我想为每个类别自动创建一个预算并将其值设为 0 美元。这样,当我去显示或编辑一个新业务时,它已经有相关的类别和预算,然后可以对其进行编辑。因此,在创建新业务时,将创建多个新预算,每个类别一个,每个的值为 0。
我读了这篇文章:Rails 3,如何在创建主记录后添加关联记录(书籍,自动添加 BookCharacter)
我想知道我是否应该在业务模型中使用 after_create 回调并让逻辑存在于预算控制器中(不完全确定如何执行此操作),或者我是否应该将逻辑添加到“新”中的 business_controller.rb调用类似于:
@business = Business.new
@categories = Category.all
@categories.each do |category|
category.budget.build(:value => "0", :business_id => @business.id)
end