开发者

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜