Rails - How to create a model linked to TWO of another model

后端 未结 2 480
无人共我
无人共我 2021-02-03 10:49

I am trying to create the following:

User model (this is fine)

id

Link model (associated with two Users)

id
user_id1
user_id2

Is this an in

相关标签:
2条回答
  • 2021-02-03 11:38

    You will very likely want two models structured as follows:

    class User < ActiveRecord::Base
      has_many :friendships
      has_many :friends, :through => :friendships #...
    end
    
    class Friendship < ActiveRecord::Base
      belongs_to :user
      belongs_to :friend, :class_name => 'User', :foreign_key => 'friend_id'
    end 
    
    # ...and hence something like this in your view
    <% for friendship in @user.friendships %>
      <%= friendship.status %>
      <%= friendship.friend.firstname %>
    <% end %>
    

    (This pattern is from a post made by Ryan Bates about two years ago during this discussion on RailsForum.)


    Just a note: this is now quite old. You may want to consider evaluating other strategies for handling this in a modern Rails context.

    0 讨论(0)
  • 2021-02-03 11:40

    You can create A Join Model that relation between the Link between the two users models

    so basically

    
    class User
    
      has_many :links, :through => :relationships
    
    end
    
    class Relationship
    
      belongs_to :user_id_1, :class=> "User"
      belongs_to :user_id_2, :class=> "User"
    
    end
    
    
    0 讨论(0)
提交回复
热议问题