我想在创建/编辑商店(子模型)时保存用户(父模型)的数据。
我的模特:
class User < ActiveRecord::Base
has_one :shop, :dependent => :destroy
end
class Shop < ActiveRecord::Base
belongs_to :user
accepts_nested_attributes_for :user #!!!!!!!!!!!!
end
我的店铺控制员:
class ShopsController < ApplicationController
def new
@shop = Shop.new
#@shop.user = current_user
@shop.build_user
end
end
def create
@shop = Shop.new(params[:shop])
@shop.user = current_user
respond_to do |format|
if @shop.save
flash[:notice] = t(:shop_created)
format.html { redirect_to(@shop) }
format.xml { render :xml => @shop, :status => :created, :location => @shop }
else
format.html { render :action => "new" }
format.xml { render :xml => @shop.errors, :status => :unprocessable_entity }
end
end
end
商店页面:
<% form_for @shop, :html => {:multipart => true} do |f| %>
<%- f.fields_for :user do |user| %>
<%= user.text_field :name, :live => true %>
<% end -%>
<% end -%>
我找到的关于保存关联模型的所有示例都是从用户(父)N个孩子(我的店铺模型)保存的。在那些情况下,我理解define accepts_nested_attributes_for。
我的情况是反过来的。
问:如何在Shop表单上提交时保存用户数据?
答案 0 :(得分:0)
查看文档,accepts_nested_attributes_for意味着在父模型上,在本例中是用户。因此,如果您执行相反操作并保存用户模型,则在传递商店嵌套属性时,它应该可以正常工作。我不得不承认我没有尝试过这个,但这是我从阅读中得到的:http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html