So now that I got the ruby console working, when you get output it’s just a big stream of text, and very hard to read separate results, and just a plain PITA.
Loading development environment (Rails 2.3.2)
/usr/local/lib/ruby/1.8/irb/completion.rb:10:in `require’: no such file to load — readline (LoadError)
from /usr/local/lib/ruby/1.8/irb/completion.rb:10
from /usr/local/lib/ruby/1.8/irb/init.rb:252:in `require’
from /usr/local/lib/ruby/1.8/irb/init.rb:252:in `load_modules’
from /usr/local/lib/ruby/1.8/irb/init.rb:250:in `each’
from /usr/local/lib/ruby/1.8/irb/init.rb:250:in `load_modules’
from /usr/local/lib/ruby/1.8/irb/init.rb:21:in `setup’
from /usr/local/lib/ruby/1.8/irb.rb:54:in `start’
from /usr/local/bin/irb:13
I have several data models that don’t directly know about each other, but need to be connected somehow so results of the opposite type can be returned when searching against the first. But which method to use?
Lets see:
has_and_belongs_to_many
make a reference table of only foreign keys – no other attributes(? used to but deprecated)
no extra models – Just link to the opposite class from the both models.
connected via a table
can only join two models
has_many :through
make a table with your two ids, and other attributes (editable?)
make a (join?) model for that table, that lets it know it belongs to the two models you are linking
tell each model that it is linked to it’s opposite model :through=> the joined model.
connected via a model
can spiderweb multiple models together
Either will work for most things. has_many :through seems to be more versatile (if a little more work required to get back what you want), especially if you want extra attributes. habtm is quick, and simple, but not quite as diverse in it’s functionality.
Now looking closer at what I need to do, I will probably be required to connect at least three things together – and who knows, maybe more! Which would make has_many :through the way to go.