Dodawanie do więcej niż jednego modela naraz

Obecnie mam działającego CRUD na tabeli rabbits.
Zachodzą takie relacje:

class Rabbit < ActiveRecord::Base has_many :rabbit_photos, :dependent => :destroy has_one :adoption, :dependent => :destroy end
Dodaje nowy rekord poprzez form_for

<%= form_for @rabbit, :html => { :multipart => true } do |f| %> [...] <% end %>
Dodawanie działa, tylko jest rozstrzelone po trzech formularzach.

Czy istnieje jakiś sposób żeby to wrzucić do jednego miejsca?

http://railscasts.com/episodes?utf8=✓&search=forms

complex + multistep do przejrzenia.

Multistep nie zawsze jest dobrym rozwiązaniem gdy formularz ma przyjmować obrazki. Gdy logika takiego multistepu przechowuje zmienne w sesji, to będzie się wykładać bo obrazek wyczerpie przeważnie limit.

Bardziej przyglądałbym się nesteted resources nie zapominając o metodzie accept_nested_attributes.

odpowiedni railscast

[quote=marioosh]Multistep nie zawsze jest dobrym rozwiązaniem gdy formularz ma przyjmować obrazki. Gdy logika takiego multistepu przechowuje zmienne w sesji, to będzie się wykładać bo obrazek wyczerpie przeważnie limit.

Bardziej przyglądałbym się nesteted resources nie zapominając o metodzie accept_nested_attributes.

odpowiedni railscast[/quote]

  • 1

Ryan pod koniec tego cast’a od multistepu sam mówi, że należałoby to zrefaktoryzować i że najlepiej tak naprawdę użyć maszyny stanów. Wg mnie nested_attributes w zupełności wystarczą.

Jeśli w modelu Rabbit używasz attr_accessible, to pamiętaj, żeby dodać oprócz accepts_nested_attributes_for :adoption do attr_accessible :adoption_attributes.

Może piszę to trochę na wyrost, ale może się przydać. A, jeszcze jedno. W tym railscaście podany jest przykład dla relacji has_many, gdzie nested resource w akcji new buduje się tak

@rabbit.adoptions.build

w przypadku relacji has_one musisz zrobić tak:

@rabbit.build_adoption