I would do:

Book
  has_many :authorings
  has_many :authors, :through => :authorings

Authoring
  belongs_to :book
  belongs_to :author
  has_many :authoring_roles
  has_many :roles, :through => :authoring_roles

AuthoringRole
  belongs_to :authoring
  belongs_to :role

Role
  has_many :authoring_roles
  has_many :authorings, :through => :authoring_roles

Author
  has_many :authorings
  has_many :books, :through => :authorings

So, an 'authoring' encapsulates the concept of an author working on a 
book, and during that authoring process the roles they fulfilled are 
encapsulated in authoring_roles.

Generally, it's good to approach this not from a data point of view, but 
from a real world concepts point of view.  The models should always try 
to encapsulate a real world concept, and have a name which describes 
that concept as simply as possible.
-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to