Из документации rails: «Вложенные атрибуты позволяют вам сохранять атрибуты в связанных записях через parent .»
Я могу сохранить атрибуты в связанных записях через CHILD . (Что здорово ... но ПОЧЕМУ это не задокументировано и не объяснено?)
(Этот проект можно клонировать с github по адресу: https://github.com/blasto333/Vehicles-Demo/)
Модель автомобиля (родительская)
class Vehicle < ActiveRecord::Base
has_one :car
attr_accessible :name, :color, :price, :condition
end
# == Schema Information
#
# Table name: vehicles
#
# id :integer not null, primary key
# name :string(255)
# color :string(255)
# price :string(255)
# condition :string(255)
# created_at :datetime
# updated_at :datetime
#
Модель автомобиля (Детский)
class Car < ActiveRecord::Base
belongs_to :vehicle
accepts_nested_attributes_for :vehicle
attr_accessible :doors, :sport, :vehicle_attributes
end
# == Schema Information
#
# Table name: cars
#
# id :integer not null, primary key
# vehicle_id :integer
# doors :integer
# sport :boolean
# created_at :datetime
# updated_at :datetime
#
Контроллер машины
class CarsController < ApplicationController
def new
@car = Car.new
@car.build_vehicle
end
def create
Car.create(params[:car])
end
end
Автомобили "новый" вид
<h1>Cars#new</h1>
<%= form_for @car do |car_form| %>
<%= car_form.fields_for :vehicle do |vehicle_fields| %>
<%=vehicle_fields.label :name%>: <%=vehicle_fields.text_field :name%><br />
<%=vehicle_fields.label :color%>: <%=vehicle_fields.text_field :color%><br />
<%=vehicle_fields.label :price%>: <%=vehicle_fields.text_field :price%><br />
<%=vehicle_fields.label :condition%>: <%=vehicle_fields.text_field :condition%><br />
<% end %>
<%=car_form.label :doors%>: <%=car_form.text_field :doors%><br />
<%=car_form.label :sport%>: <%=car_form.text_field :sport%><br />
<%=car_form.submit%>
<% end %>