Rails Self Joining/Single Model

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Table: users
# +------------+--------------+------+-----+---------+----------------+
# | Field           | Type                | Null  | Key | Default   | Extra                  |
# +------------+--------------+------+-----+---------+----------------+
# | id               | int(11)              | NO   | PRI   | NULL     | auto_increment | 
# | email         '| varchar(255)     | YES  |         | NULL     |                         | 
# | owner_id    | int(11)              | YES  '|        | NULL      |                         | 
# +------------+--------------+------+-----+---------+----------------+

#User model
class User < ActiveRecord::Base
  has_many :users, :class_name => "User", :foreign_key => 'owner_id', :as => "member"
  belongs_to :user
end


#usage in console:
>>user = User.new
>>user.email = "test@email.com"
=> "test@email.com"
>>user.save
=> true
>> user.users.create(:email => "another@test.com")
=>true