在Rails中,我应该如何允许用户创建其他用户的有序列表?

时间:2016-02-24 18:50:35

标签: ruby-on-rails associations rails-activerecord

假设我有一个用户模型,并且我想让每个用户选择他们的朋友"这也是用户,按照喜好的顺序。通过这种方式,用户可以拥有最好的朋友"和一个"第三好朋友"等等。我认为我正在寻找的东西(纠正我,如果这是一条不好的路径)是用户模型中的一个问题,并为他们增加了订单的维度。

最终目标是允许我做类似的事情:

@user.favorite_users =>他们最喜欢的用户的有序列表。

@user.favorite_users.each do |user| //iterate through each user in order from best friend to worst friend end

我使用的是Ruby 2.3.0,Rails 4.2。

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

class User < ActiveRecord::Base
  has_many :friendships
  has_many :friends, -> { order 'friendships.order ASC'}, through: :friendships
end

class Friendship < ActiveRecord::Base
  belongs_to :user
  belongs_to :friend, class_name: 'User'  
end  

@user.friends会在order

中为您提供friendships订购的用户列表