always completely normalize your datamodel?

If you put the primary key of table 1 also in table 3, your associations become less useful, perhaps useless. Fortunately 'has_many :through' gives you what you want without messing up your associations.

ModelA   has_many :model_bs   has_many :modelcs, :through :model_b

ModelB   belongs_to :model_a   has_many :model_cs

ModelC   belongs_to :model_b

This way you can refer to ModelA.model_cs directly, and Rails will do the work of putting the right information into the SQL call.

--f