Problem saving associated models
I want to save data from User(parent model) when creating/editing a Shop (child model).
My models:
class User < ActiveRecord::Base
has_one :shop, :dependent => :destroy
end
class Shop < ActiveRecord::Base
belongs_to :user
accepts_nested_attributes_for :user #!!!!!!!!!!!!
end
My Shop controller:
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
Shop page:
<% form_for @shop, :html => {:multipart => tr开发者_开发知识库ue} do |f| %>
<%- f.fields_for :user do |user| %>
<%= user.text_field :name, :live => true %>
<% end -%>
<% end -%>
All examples that I found about saving associated models are when saving from User (parent) N children ( my Shop model). In those cases I understand where define accepts_nested_attributes_for.
My case is inverse.
Q: How can I save User data when submitting on Shop form ?
Looking at the documentation, the accepts_nested_attributes_for is meant to be on the parent model, in this case the user. So if you do the reverse, and save on the user model, when passing the shop nested attributes, it should work. I have to admit i haven't tried this, but it's what i got from reading this: http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html
精彩评论