at first i thought this might be an easy solution but then i realized that there is a hmt association with users/jobs/projects and that makes things more difficult.
I will however suggest a change and see if this works for you. assuming a job is something like "tester", "developer", etc., why not make "lead" a job as well and remove the lead_id from the project altogether?
that would leave you with:
class Project < AR::Base has_many :jobs end
class Job < AR::Base belongs_to :project belongs_to :user end
class User < AR::Base has_many :jobs has_many :projects, :through => :jobs do def by_jobname(jobname) find(:all, :conditions => ["jobs.name = ?", jobname]) end
def lead find(:all, :conditions => "jobs.name = 'lead'") end end
then you can use the above association extensions like so:
u = User.find(...)
u.projects # => all projects in which the user has a job u.projects.by_jobname('developer') # => all projects where user has a developer job u.projects.lead # => all projects where user has a lead job
you could even do the same with projects to find users based on job.
see: ActiveRecord::Associations::ClassMethods
section on association extensions for more info.
hope this helps
Chris