has_and_belongs_to_many migration problem i am facing

I have two models cow and milkman.

I am using has_and_belongs_to_many in both models .

By mistake i have deleted cows_milkmans table from database.

When i use this command i am getting error

a = Cow.last

a.milkmans # when i fire this command then i am getting error that cows_milkmans table not exist

As per my knowledge has_and_belongs_to_many will create third table automatically , no migration is needed.

How can get that table ?

Hi pafahim,

When you use HABM association in your models It will not generate the join table automatically. We have to create manually.

For your issue try to rollback the join table from database.

Thanks & Regards,

VIjay

No man …

i just use HABM in models and when i fire command in console at that point third table is created.

And i do nothing manually…

No man … i just use HABM in models and when i fire command in console at that point third table is created.

And i do nothing manually…

Hi!

I don’t use habtm so I’m not familiar with how it work in core. But reading from http://guides.rubyonrails.org/association_basics.html#the-has_and_belongs_to_many-association

The simplest rule of thumb is that you should set up a has_many :through relationship if you need to work with the relationship model as an independent entity. If you don’t need to do anything with the relationship model, it may be simpler to set up a has_and_belongs_to_many relationship (though you’ll need to remember to create the joining table in the database).

You should use has_many :through if you need validations, callbacks, or extra attributes on the join model.

So I guess you need to create that table in the database manually.

Also, I haven't had to do it myself, but I've heard that retrofitting a habtm setup to use hmt, after discovering a need for any of the above, can be a royal pain in the proverbial posterior. So, I usually just ignore habtm, and use hmt for all such joins.

-Dave