Guys,
I have a question about ActiveRecord and how it handles foreign keys.
Say I have two tables, listings and categories:
create table categories (id integer not null auto_increment primary key, category varchar(100) not null);
create table listings (id integer not null auto_increment primary key, title varchar(255) not null, category_id integer not null);
alter table listings add constraint listings_categories_fk foreign key (category_id) references categories (id);
To access these, I create two classes:
class Listing < ActiveRecord::Base belongs_to :category end
class Category < ActiveRecord::Base has_many :listings end
Now if I run some code like:
ActiveRecord::Base.logger = Logger.new("/home/sodonnel/rails/test.log") mylisting = Listing.find(1)
puts "current listing is #{mylisting.title}\n" puts "its title is #{mylisting.category.category}"
and look in the log file, I can see ActiveRecord required two SQL statements to get my details.
If I want to display a list of 50 listings, as Category|Title, it will require 51 SQL statements to get me the results.
Is there a better way to get this results set using ActiveRecords built in capabilities (ie one that will join the two tables), or do I need to 'find_by_sql' or something similar to get this?
Thanks Stephen.