Settare gli extra attributes di un join model

Se ho:

class Company < ActiveRecord::Base
has_many :categorizations
has_many :categories, :through => :categorizations

class Category < ActiveRecord::Base
has_many :categorizations
has_many :companies, :through => :categorizations

class Classification < ActiveRecord::Base
has_many :categorizations

class Categorization < ActiveRecord::Base
belongs_to :company
belongs_to :category
belongs_to :classification

Il modelllo Categorization ha come attributi, tra altri, company_id,
category_id e classification_id come si puo’ dedurre.
Nel form di creazione di una nuova Company associo le categorie e
automaticamente viene creata la tabella categorizations con i campi
company_id e category_id valorizzati.
Se contemporaneamente, nello stesso form, volessi valorizzare anche il
campo classification_id come potrei fare?
Nel form ho provato a mettere:

= collection_select :categorization, :classification_id,
@classifications, :id, :classification_type

ma senza risultato.

On 26 December 2011 18:42, Mauro [email protected] wrote:

class Classification < ActiveRecord::Base
automaticamente viene creata la tabella categorizations con i campi
company_id e category_id valorizzati.
Se contemporaneamente, nello stesso form, volessi valorizzare anche il
campo classification_id come potrei fare?
Nel form ho provato a mettere:

= collection_select :categorization, :classification_id,
@classifications, :id, :classification_type

ma senza risultato.

Non c’e’ un modo?

Msan M. wrote in post #1038493:

On 26 December 2011 18:42, Mauro [email protected] wrote:

class Classification < ActiveRecord::Base
automaticamente viene creata la tabella categorizations con i campi
company_id e category_id valorizzati.
Se contemporaneamente, nello stesso form, volessi valorizzare anche il
campo classification_id come potrei fare?
Nel form ho provato a mettere:

= collection_select :categorization, :classification_id,
@classifications, :id, :classification_type

ma senza risultato.

Non c’e’ un modo?

mi sa tanto che il tuo o è il mio stesso problema o poco ci manca…

Msan M. wrote in post #1038717:

2011/12/29 Silvio Dell’Oste [email protected]:

@classifications, :id, :classification_type

ma senza risultato.

Non c’e’ un modo?

mi sa tanto che il tuo o il mio stesso problema o poco ci manca…

Non sei riuscito a trovare una soluzione?

io? no :cry:

2011/12/29 Silvio Dell’Oste [email protected]:

@classifications, :id, :classification_type

ma senza risultato.

Non c’e’ un modo?

mi sa tanto che il tuo o il mio stesso problema o poco ci manca…

Non sei riuscito a trovare una soluzione?

2011/12/29 Silvio Dell’Oste [email protected]:

Non sei riuscito a trovare una soluzione?

io? no :cry:

L’utilizzo di questi frameworks e’ vero ti semplifica la vita ma
qualche volta diventa complicato risolvere banali problemi.

se hai

form_for @company

Classification e` un altro modello, quindi hai bisogno di una nested
form:

(Rails 3 - docs incompleti)

(2.3 ma non credo ci siano differenze)

I framework ti semplificano la vita se li conosci fino in fondo e
purtroppo ci vuole tanto tempo per impararli :slight_smile:

Le Rails guides sono ottime, vi consiglio di leggerle (cosa che dovrei
fare anch’io).

Mi raccomando in company ricordati accepts_nested_attributes_for e se
hai settato attribute accessor sii sicuro che sia aggiunto
l’attributo usato in accepts_nested_attributes_for

Msan M. wrote in post #1038720:

2011/12/29 Silvio Dell’Oste [email protected]:

Non sei riuscito a trovare una soluzione?

io? no :cry:

L’utilizzo di questi frameworks e’ vero ti semplifica la vita ma
qualche volta diventa complicato risolvere banali problemi.

non vorrei andare off-topic (che non è neanche il mio) ma hai ragione…

se riesci a darmi una mano o un input, nell’altro topic o qui è lo
stesso, te ne sarei
grato… anche se il problema credo sia simile :frowning:

2011/12/30 Riccardo T. [email protected]:

se hai

form_for @company

Classification e` un altro modello, quindi hai bisogno di una nested
form:

Si pero’ non sono riuscito a spiegarmi:
non devo gestire Classification ma devo valorizzare gli extra
attributes di un join model (Categorization) al momento della
creazione di una nuova Company.

On 30 December, 2011, at 11:54, Mauro wrote:

Si pero’ non sono riuscito a spiegarmi:
non devo gestire Classification ma devo valorizzare gli extra
attributes di un join model (Categorization) al momento della
creazione di una nuova Company.

Penso tu ti sia spiegato bene e Riccardo ti abbia puntato sulla giusta
direzione :slight_smile:

Leggiti queste pagine delle API:

class Company < ActiveRecord::Base
has_many :categorizations
has_many :categories, :through => :categorizations

accepts_nested_attributes_for :categorizations

end

A questo punto nella form puoi fare una cosa di questo tipo:

<%= form_for @company do |company_form| %>
Name: <%= company.text_field :name %>
<%= fields_for @company. categorizations do |categorizations_fields|
%>
Registered? <%= categorizations_fields.check_box :registered %>
<% end %>

<%= company_form.submit %>
<% end %>

Prova a giocare un po’ con fields_for e vedi se quello che ti serve.

Alessandro

2011/12/30 Alessandro M. [email protected]:

Leggiti queste pagine delle API:

Prova a giocare un po’ con fields_for e vedi se quello che ti serve.

Allora…avevo gia’ provato ad usare fields_for e accept_nested…
Supponiamo che nel form per la creazione di una nuova Company associ
due categories e nella sezione fields_for valorizzo il campo
classification_id inserendoci una Classification (avevo gia’ creato
tre classifications), quello che succede e’ che nella tabella
categories mi vengono creati tre records:
company_id: 1, category_id: 2, classification_id: nil
company_id: 1, category_id: 4, classification_id: nil
company_id: 1, category_id: nil, classification_id: 4

che non e’ quello che voglio, io vorrei

company_id: 1, category_id: 2, classification_id: 4
company_id: 1, category_id: 4, classification_id: 4