问题保存相关模型

时间:2011-08-30 01:22:10

标签: ruby-on-rails

我想在创建/编辑商店(子模型)时保存用户(父模型)的数据。

我的模特:

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表单上提交时保存用户数据?

1 个答案:

答案 0 :(得分:0)

查看文档,accepts_nested_attributes_for意味着在父模型上,在本例中是用户。因此,如果您执行相反操作并保存用户模型,则在传递商店嵌套属性时,它应该可以正常工作。我不得不承认我没有尝试过这个,但这是我从阅读中得到的:http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html