Nested forms

Witam wszystkich,

mam duży problem z nested forms. Otóż chciałbym zrobić formularz dodawania ogłoszenia. Formularz miałby dodawać ogłoszenie i użytkownika (jeśli ten nie istnieje i nie jest zalogowany). Jeśli użytkownik jest zalogowany to formularz miałby być częściowo wypełniony (danymi użytkownika), zaś pola dotyczące samego ogłoszenia miały by być puste - użytkownik dodając ogłoszenie aktualizował by dane konta, zaś ogłoszenie dodawało normalnie. Niestety nie mogę tego osiągnąć.

Robię coś takiego:

USER MODEL:

[code]class User < ActiveRecord::Base
has_many :adverts, :dependent => :destroy;
accepts_nested_attributes_for :adverts, :allow_destroy => true, :reject_if => :all_blank

attr_accessible :email, :name, :password, :phone, :adverts_attributes

end[/code]
ADVERT MODEL:

[code]class Advert < ActiveRecord::Base
belongs_to :user

attr_accessible :name, :description
end[/code]
KONTROLER:

[code]class AdvertsController < ApplicationController
def new
@user =
if User.current
User.current
else
User.new
end

@user.adverts.build

end

def create
params[:user][:password] = Devise.friendly_token[0,20];
@user = User.new(params[:user])

if @user.save
  redirect_to adverts_url, notice: 'created'
else
  render action: 'new' 
end

end
end[/code]
FORM:

[code]<%= form_for @user, :url => lodges_url do |u| %>
<% if @user.errors.any? %>


<%= pluralize(@lodge.errors.count, “error”) %> prohibited this lodge from being saved:



    <% @user.errors.full_messages.each do |msg| %>
  • <%= msg %>

  • <% end %>


<% end %>
<%= u.fields_for :adverts do |l| %>
	<div class="field">
		<%= l.label :name %><br />
		<%= l.text_field :name %>
	</div>
	<div class="field">
		<%= l.label :description %><br />
		<%= l.text_area :description %>
	</div>
<% end %>

<div class="field">
	<%= u.label :name %><br />
	<%= u.text_field :name %>
</div>
<div class="field">
	<%= u.label :email %><br />
	<%= u.text_field :email %>
</div>
<div class="field">
	<%= u.label :phone %><br />
	<%= u.text_field :phone %>
</div>
<div class="actions">
	<%= u.submit %>
</div>

<% end %>[/code]
Póki co zostaje zrealizowany warunek 1. czyli jesli uzytkownik nie istnieje to go dodaje wraz z ogloszeniem. Jeśli zaś użytkownik dodaje ogłoszenie będąc zalogowanym to od razu ma wypełnione dane ogłoszenia - co nie jest poprawnym zachowaniem i wpis nowy się nie dodaje.

Będę wdzięczny za pomoc.
Pozdrawiam

nie wiem czy dobrze rozumie ale moim zdaniem powinienes zmienic kod w create bo teraz on za kazdym razem dodaje nowego usera do bazy a powinien aktualizowac ogloszenie jezeli zalogowany w przeciwnym razie dodawac nowego usera

No właśnie nie do końca mi o to chodzi - chcę by zawsze dodawał ogłoszenie, zaś użytkownika aktualizował lub dodawał w zależności od tego czy jest zalogowany.

Może lepiej użyć wzorca numer 3 z: http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/