Two relationships to same table, which way to go?

Feedback here would be excellent! Below are two options for creating
a
schema where one table has two relationships to the same table in
different roles. Please let me know thoughts or any additional
options
to consider:

OPTION 1

create_table :users do |t|
t.column :name, :string
end

create_table :links do |t|
t.column :url
t.column :submitter_id, :integer
t.column :receiver_id, :integer
end

class User < ActiveRecord::Base
has_many :submitted_links, :class_name => ‘Link’, :foreign_key =>
‘submitter_id’
has_many :received_links, :class_name => ‘Link’, :foreign_key =>
‘receiver_id’
end

class Link < ActiveRecord::Base
belongs_to :submitter, :class_name => ‘User’, :foreign_key =>
‘submitter_id’
belongs_to :receiver, :class_name => ‘User’, :foreign_key =>
‘receiver_id’
end

** CONCERN: Doesn’t this break most of the automagic rails goodness?

OPTION 2

create_table :users do |t|
t.column :name, :string
end

create_table :submitters do |t|
t.column :user_id, :integer
end

create_table :receivers do |t|
t.column :user_id, :integer
end

create_table :links do |t|
t.column :url
t.column :submitter_id, :integer
t.column :receiver_id, :integer
end

class User < ActiveRecord::Base
has_one :submitter
has_one :receiver
end

class Submitter < ActiveRecord::Base
belongs_to :user
has_many :links
end

class Receiver < ActiveRecord::Base
belongs_to :user
has_many :links
end

class Link < ActiveRecord::Base
belongs_to :submitter
belongs_to :receiver
end

** I think this is logically more sound. Opinions? Any thoughts on
** the differences as far as database performance?

#1.

a user can submit or receive.

they are still a user.

trying to break their role at a moment in time out into an enter new
class
seems like giant overkill.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs