Is it possible to manage four models in a form?

The models are:

Company
  has_many :categorizations
  has_many :categories, :through => :categorizations

Category
  has_many :categorizations
  has_many :companies, :through => :categorizations

Classification
  has_many :categorizations

Categorization
  belongs_to :company
  belongs_to :category
  belongs_to :classification

I would create a new company, assign a category and assign a
classification to the company.category all with one form.
Is it possible?
I think the only way is to create a new company and assign a category
with one form, then in the company controller or company model assign
a classification at company.category, the classification.id may be
passed as a parameter with the form.
What do you think about?

Try looking into nested forms

Try looking into nested forms

The models are:

Company

has_many :categorizations

has_many :categories, :through => :categorizations

Category

has_many :categorizations

has_many :companies, :through => :categorizations

Classification

has_many :categorizations

Categorization

belongs_to :company

belongs_to :category

belongs_to :classification

I would create a new company, assign a category and assign a

classification to the company.category all with one form.

Is it possible?

I think the only way is to create a new company and assign a category

with one form, then in the company controller or company model assign

a classification at company.category, the classification.id may be

passed as a parameter with the form.

What do you think about?

Yes, it’s possible to use 4 models in a single form. But you have to setup the

naming of the inputs right coupled with accepts_nested_attributes_for.

The problem is that I need to insert a value in the classification_id
of the join model Categorization.
The table for the join model is automatically enhanced, so when I
create a new Company in the categorizations table the attributes
company_id and category_id are setted.
I want to set also the attribute classification_id of the join table
so I think I can do it only in a before_save callback and not in the
company form.

Hey,
Take a look at fields_for helper. This helper might help you.
:smiley:

Sorry for my ignorance, I'm trying but I don't see the way fields_for can help.

Hi Marco,

If I understand your question, Do you want to fill in one form many models. Am I right?
If your question is this you can use fields_for to apply it.

Check something similar in

http://railscasts.com/episodes/73-complex-forms-part-1

:smiley:

Sorry, I made a mistake…

Your name is Mauro and not Marco.

;/

Yes but one of the models is the join model of a has_many :through relation.
Company has_many :categories, :though => :categorizations
Classification has_many :categorizations
Categorization
belongs_to: company
belongs_to: category
belongs_to: classification

Categorizations attributes are:
company_id: integer
category_id: integer
classification_id: integer
amount: decimal

When I create a new Company with a category associated a join model
categorization is magically created with company_id and category_id
setted, ok?
I want be able, in the same form, setting also classification_id and
amount, so that, when the join model is created, it have company_id,
category_id, classification_id and amount all setted
Classification_id is taken from a collection:

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

Is it possible to do that?