Проблема сохранения связанных моделей - PullRequest
0 голосов
/ 30 августа 2011

Я хочу сохранить данные от пользователя (родительская модель) при создании / редактировании магазина (дочерняя модель).

Мои модели:

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:

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 детей (модель моего магазина) В этих случаях я понимаю, где определить acceptpts_nested_attributes_for.

Мой случай обратный.

В: Как я могу сохранить данные пользователя при отправке в форму магазина?

1 Ответ

0 голосов
/ 30 августа 2011

Глядя на документацию, accepts_nested_attributes_for предназначен для родительской модели, в данном случае для пользователя. Поэтому, если вы делаете обратное и сохраняете пользовательскую модель, при передаче вложенных атрибутов магазина это должно работать. Я должен признать, что я не пробовал это, но это то, что я получил, прочитав это: http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...