Cześć, mam pytanie jak w akcji create po wykonaniu save dowiedzieć się jakie id ma user. Potrzebuję dodać stan konta do usera zaraz po rejestracji wydaje mi się że to jest najlepsze miejsce gdzie to można dodać. Relacja jest User posiada jedno konto czy jak kto woli rachunek rozliczeniowy .
[code] def create
build_resource
if resource.save
if resource.active_for_authentication?
set_flash_message :notice, :signed_up if is_navigational_format?
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_up_path_for(resource)
else
set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format?
expire_session_data_after_sign_in!
respond_with resource, :location => after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
respond_with resource
end
Ok, pewnie i tak (nawet o tym nie pomyślałem). Może jakaś wskazówka jak to zrobić bo za bardzo nie wiem, znaczy wiem jak działa before/after save lecz nie wiem jak taka metoda miała by wyglądać co by mi tworzyła nowy rachunek z id usera.
Nie oczekuję gotowego kody a raczej jakieś wskazówki lub kawałka przykładowego kodu.
def add_account
n_account = Account.new
self.n_account.name = "testowy"
self.n_account.balance = 0
self.n_account.user_id = id
self.n_account.save
end
end
i wywala mi błąd:
undefined method `name=’ for []:ActiveRecord::Relation
jak zrobie tak:
[quote=zlw]self.n_account.build(name: 'foo', balance: 0)
?[/quote]
Niestety dalej mam błąd :undefined method `each’ for #Account:0x007faefab51020
Model wygląda tak :
[code]class User < ActiveRecord::Base
after_save :add_account
Include default devise modules. Others available are:
[quote=Tomash]Skoro masz relację “accounts”, to skąd pomysł na wołanie metody “n_account”?
Po prostu musisz zbudować obiekt dowiązany relacją:
acc = self.accounts.new
acc.name = "cośtam"
acc.save
[/quote]
Dzięki, też mi się wydawało dziwne wołać self.n_account.build(name: ‘foo’, balance: 0) i de facto nie działało. Już wszystko śmiga tak jak trzeba. Dzięki za pomoc.