Mam dwie aplikacje, App1 i App2. App1 publikuje ładunek JSON do App2 zawierający dane dla obiektu nadrzędnego i podrzędnego. Jeśli obiekt nadrzędny już istnieje w App2, aktualizujemy rekord nadrzędny, jeśli coś się zmieniło i tworzymy rekord podrzędny w App2. Jeśli obiekt nadrzędny nie istnieje w App2, musimy najpierw go utworzyć, a następnie utworzyć obiekt podrzędny i skojarzyć te dwa. Teraz robię to tak:

class ChildController
  def create
    @child = Child.find_or_initialize_by_some_id(params[:child][:some_id])
    @child.parent = Parent.create_or_update(params[:parent])

    if @child.update_attributes(params[:child])
      do_something
    else
      render :json => @child.errors, :status => 500
    end
  end
end

Coś jest nieprzyjemne w tworzeniu/aktualizowaniu rodzica w ten sposób. Czy jest lepszy sposób na to? Dziękuję!

5
Matt 19 październik 2012, 22:17

1 odpowiedź

Użyj accept_nested_attributes_for, aby poradzić sobie z relacjami między rodzicami i dziećmi. Oto post na blogu, który pomoże Ci http://currentricity.wordpress.com/2011/09/04/the-definitive-guide-to-accepts_nested_attributes_for-a-model-in- szyny-3/

1
Raghu 19 październik 2012, 22:24