Ruby on Rails - ¿Cómo unir dos tablas?

Tengo dos tablas (temas y páginas) en una relación de uno a muchos. Quiero agregar criterios de temas y páginas para analizar un sql, pero el progreso ha sido muy lento y muchas veces tiene problemas. Soy nuevo en rieles, por favor ayuda.

class Subject < ActiveRecord::Base
  has_many :pages
end

class Page < ActiveRecord::Base
  belongs_to :subject 
end

muestra de datos en temas, enumera tres columnas a continuación:

id  name    level
1   'Math'  1
6   'Math'  2
...

Datos de muestra en páginas, las columnas enumeradas a continuación:

id  name                    subject_id
--  --------------------    ----------
2   Addition                1
4   Subtraction             1
5   Simple Multiplication   6
6   Simple Division         6
7   Hard Multiplication     6
8   Hard Division           6
9   Elementary Divsion      1

Dado que no conozco el subject.id, solo sé el nombre y el nivel del tema, y el nombre de la página. Aquí está el sql que quiero generar (o algo similar que lograría el mismo resultado):

select subjects.id, subjects.name, pages.id, pages.name from subjects, pages
 where subjects.id = pages.subject_id
   and subjects.name = 'Math'
   and subjects.level = '2'
   and pages.name like '%Division'  ;

Espero obtener dos filas en el resultado:

subjects.id     subjects.name   pages.id    pages.name 
-----------     -------------   --------    -----------
6               Math            6           Simple Division
6               Math            8           Hard Division

Este es un sql muy simple, pero no he podido obtener lo que quería en los rieles.

Here is my rails console:  

>> subject = Subject.where(:name => 'Math', :level => 2)
  Subject Load (0.4ms)  SELECT `subjects`.* FROM `subjects` WHERE `subjects`.`name` = 'Math' AND `subjects`.`level` = 2
[#<Subject id: 6, name: "Math", position: 1, visible: true, created_at: "2011-12-17 04:25:54", updated_at: "2011-12-17 04:25:54", level: 2>]
>> 
>> subject.joins(:pages).where(['pages.name LIKE ?', '%Division'])
  Subject Load (4.2ms)  SELECT `subjects`.* FROM `subjects` INNER JOIN `pages` ON `pages`.`subject_id` = `subjects`.`id` WHERE `subjects`.`name` = 'Math' AND `subjects`.`level` = 2 AND (pages.name LIKE '%Division')
[#<Subject id: 6, name: "Math", position: 1, visible: true, created_at: "2011-12-17 04:25:54", updated_at: "2011-12-17 04:25:54", level: 2>, #<Subject id: 6, name: "Math", position: 1, visible: true, created_at: "2011-12-17 04:25:54", updated_at: "2011-12-17 04:25:54", level: 2>]
>> 
>> subject.to_sql
"SELECT `subjects`.* FROM `subjects`  WHERE `subjects`.`name` = 'Math' AND `subjects`.`level` = 2"
>> subject.size
1
>> subject.class
ActiveRecord::Relation

1.a declaración: subject = Subject.where (: name => 'Math',: level => 2) 2.a declaración: subject.joins (: pages) .where (['pages.name LIKE?', '% Division' ])

Preguntas:

los resultados del sql encadenado realmente devuelve dos filas, pero subject.size dice solo 1? ¿Cómo le digo que devuelva columnas de: páginas también?Por qué subject.to_sql todavía muestra el sql de la declaración 1 solamente, ¿por qué no incluyó el sql encadenado de la declaración 2?sencialmente, ¿qué necesito para escribir las declaraciones de manera diferente para analizar el sql como se enumeró anteriormente (o lograr el mismo resultado)?

Muchas gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta