 <p>Assuming your Job can only have one worker that is set when a Proposal is accepted, you'd want something like this:</p> <pre><code>class Job &lt; ActiveRecord::Base belongs_to :poster, class_name: 'User', foreign_key: 'poster_id' belongs_to :worker, class_name: 'User', foreign_key: 'worker_id' has_many :proposals, dependent: :destroy end class User &lt; ActiveRecord::Base has_many :posted_jobs, class_name: 'Job', foreign_key: 'poster_id', dependent: :destroy has_many :current_jobs, class_name: 'Job', foreign_key: 'worker_id' has_many :proposals, through: :jobs end class Proposal &lt; ActiveRecord::Base belongs_to :job belongs_to :user end </code></pre> <p>With this approach, you can get user.posted_jobs and user.current_jobs.</p> <p>See this: <a href="http://stackoverflow.com/questions/5294775/same-model-for-two-belongs-to-associations">Same Model for Two belongs_to Associations</a></p>