Ho i modelli Ruser e Bag.
Uso Ruser al posto di User perche’ “user” crea problemi con postgres.
I bags (sacchetti) devono essere consegnati a Ruser e mi serve sapere
la data di consegna.
Ho creato queste associazioni:
class Bag < ActiveRecord::Base
has_many :deliveries
has_many :rusers, :through => :deliveries
class Delivery < ActiveRecord::Base
belongs_to :ruser
belongs_to :bag
Ruser and Bag sono gia’ popolati.
Delivery ha delivered_at come attributo extra.
Devo consegnare 3 bags (sacchetti) a un Ruser.
Posso fare
bags=Bags.all
user=Ruser.find(params[:id])
delivery = user.deliveries.create(:delivered_at => Date.today).
Pero’ non posso fare delivery.bags << bags.
Cosi’ come sono fatte le associazioni dovrei creare tante deliveries
quanti sono i sacchetti consegnati ma se consegno piu di un sacchetto
in uno stesso giorno mi piacerebbe poter fare qualcosa tipo
delivery.bags << bags.
Probabilmente c’e’ qualche errore nelle associazioni.
In pratica te inserisci gli oggetti bags, questo fa si che vengano
generati degli oggetti deliveries “vuoti”, ovvero con “delivered_at”
impostato a nil.
Infine usi quest’ultima informazione per aggiornare gli attributi
necessari.
On 24 January 2011 17:16, maurizio de magnis [email protected] wrote:
key: value
al posto di
:key => value
Allora come ho detto aspetto che jruby supporti pienamente ruby 1.9
per usare la nuova notazione :-).
Tra parentesi tornando a bomba la seguente notazione user.bags << bags
salva automaticamente l’oggetto? Non ho bisogno di fare user.save?
E comunque sarei interessato a sapere se c’e’ qualche soluzione
one-shot predisposta per questi casi, in modo da ottenere, per
esempio, il chain degli oggetti generati. Qualcosa tipo:
bags = bag.all
result = User.find(id).bags.push(bags)
result.related_deliveries.update_all(…)
Maurizio
Il 24 gennaio 2011 17:27, maurizio de magnis [email protected] ha scritto: