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 instance in which I would want to use the has_and_belongs_to_many association type on the Link model? How should I do this?
Ultimately, I would like to be able to have a user object and call @user.links to get all links involving that user...
I'm just not sure what the best way to do this in Rails is.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With