Can a model have both a has_many and has_many through?

I'll try to explain this as best as I can... I have an Assignment and User model, with users having many assignments and the assignment belonging to a user. But, along with assignments having one owner, I'd like for assignments to have multiple "secondary" owners, through the use of "has_many :through => assignments_users". Is this possible? I tried to implement this but I got an error saying an assignment with the user id of 1 can't be found, when there were assignments with the user_id as 1, but it was looking through the assignments_users table. Thanks!

Andrew wrote:

I'll try to explain this as best as I can... I have an Assignment and User model, with users having many assignments and the assignment belonging to a user. But, along with assignments having one owner, I'd like for assignments to have multiple "secondary" owners, through the use of "has_many :through => assignments_users". Is this possible? I tried to implement this but I got an error saying an assignment with the user id of 1 can't be found, when there were assignments with the user_id as 1, but it was looking through the assignments_users table. Thanks!

User   has_many :assignments_users   has_many :assignments, :through => :assignments_users end

Assignment   has_many :assignments_users   has_many :users, :through => :assignments_users   belong_to :owner, :class => User, :foreign_key => :owner_id end

AssignmentUser   belongs_to :assignment   belongs_to :user end

Would provide these message: @user.assignments @assignment.users @assignment.owner

However, I would likely alter the naming of these objects somewhat.

Something like:

User   has_many :assignments   has_many :projects, :through => :assignments end

Project   has_many :assignments   has_many :users, :through => :assignments   belong_to :owner, :class => User, :foreign_key => :owner_id end

Assignment   belongs_to :project   belongs_to :user end

In this case User and Project are solidly nouns. Assignment (although could be a noun) servers better for linking Users to Projects. However, this is really just semantics, although I do make an effort to give my joining models a good solid name when using has_many :through.

I like this because the act of assigning a project to a user can be more easily thought of from a RESTful perspective. In order to "create" an association between a user and a project, one would create an assignment.

assignments_controller