class Cook < ActiveRecord::Base has_many :port_mappings has_many :cookers, :through => :port_mappings has_many :datapoints, :through => :port_mappings end class PortMapping < ActiveRecord::Base belongs_to :cook has_one :sensor has_one :cooker has_many :datapoints end class Datapoint < ActiveRecord::Base belongs_to :port_mapping end class Sensor < ActiveRecord::Base has_one :sensor_type has_many :port_mappings has_many :datapoints, :through => :port_mappings has_many :cooks, :through => :port_mappings end ..but it errors: (there is no port_mapping_id in cooker because it has_many - port_mapping has a cookers_id instead..) LINE 1: SELECT "cookers".* FROM "cookers" WHERE ("cookers".port_map... ^ : SELECT "cookers".* FROM "cookers" WHERE ("cookers".port_mapping_id = 1) LIMIT 1 Extracted source (around line #38): 35: <% for datapoint in session.datapoints %> 36: 37: <%= datapoint.timestamp %> 38: <%= datapoint.port_mapping.cooker.name %> 39: <%= datapoint.port_mapping.sensor.name %> 40: <%= datapoint.value %> 41: