Topic: Has one/many through join model

I have a scenario where I have Projects, Tasks and Work(Detail).

There is a fixed set of task with unique properties (Code, Description, default on_site value...).

The projects have multiple task but not always the same set.

An administrative user determines which task apply to a specific project, and possibly overrides the default on_site value for that specific project.

class Project < ActiveRecord::Base
  belongs_to :site
  has_many :project_tasks
  has_many :tasks, :through => :project_tasks
end
class Task < ActiveRecord::Base
  has_many :project_tasks
  has_many :projects, :through => :project_tasks
end

Worker bees then do work and create a time sheet detail based on the project and task involved.

The detail is really related to the project_task relationship and what feels natural to me is:

class Detail < ActiveRecord::Base
  belongs_to :project_tasks
  has_one :project, :through => :project_tasks
  has_one :task, :through => :project_tasks
class Project < ActiveRecord::Base
  belongs_to :site
  has_many :project_tasks
  has_many :tasks, :through => :project_tasks
  has_many :details, :through => :project_tasks
end
class Task < ActiveRecord::Base
  has_many :project_tasks
  has_many :projects, :through => :project_tasks
  has_many :details, :through => :project_tasks
end

Now this would require an id in the join model and a reference to that in the detail model project_task_id.

I thought I remembered a rule about not having id's in a join model.
Is there a problem with creating this kind of relationship?

Is there a better/more recognized way?

Also I prefer to create my project_task join model with a better name, but I cannot come up with something other than relationship.