我的应用程序中的一些伪代码:
User has many Products
User has many Projects
Project and Product belong to User
此外:
Project has one Video
Video belongs to Project
我有一个使用 Wicked gem 构建的多步骤向导。在第一步中,我创建并保存了一个项目。在第二步中,我向该项目添加了一个视频:
= form_for @project do |f|
= f.fields_for :video_attributes do |v|
= v.file_field :file
一切正常,但我想在同一步骤中向项目的用户添加一个产品。对于接受嵌套属性如何适用于这类事情,我有点困惑。
我想我需要在我的邪恶控制器中做这样的事情:
@user = current_user
# wicked makes us use :project_id as it hijacks :id
@project = @user.projects.find(params[:project_id])
@user.products.build
但是我在哪里粘贴“嵌套属性”调用?我是否需要多次调用accepts_nested_attributes_for?这行得通吗?
Make Project model accept nested attributes for User
Make User model accept nested attributes for Product
= form_for @product do |f|
= f.fields_for :user_attributes do |u|
= u.fields_for :product_attributes do |p|
= p.file_field :image
直到明天我才能尝试代码,但我会睡得更好,因为我知道当我得到它时我可以解决这个问题。