Rails 4按has_many到

时间:2015-11-10 19:55:34

标签: sql ruby-on-rails postgresql ruby-on-rails-4

就我而言,用户通过友谊与其他用户相关。我想通过他们拥有的朋友/友谊来订购我的用户。

class User < ActiveRecord::Base
    has_many :friendships
    has_many :inverse_friendships, :class_name => "Friendship", :foreign_key => "friend_id"
end


class Friendship < ActiveRecord::Base
    belongs_to :user
    belongs_to :friend, :class_name => "User"
end

NB在我的情况下,我使用 postgres

我目前正在使用

a = User.all.collect {|x| [x.id, x.friends.length]}; 
a = a.sort {|x,y| y[-1] <=> x[-1]}

x.friends是一种通过Friendship.where('friend_id = ? OR user_id = ?', self, self)返回所有朋友的方法。我认为这不是最理想的,因为它会为每个用户提出请求。

1 个答案:

答案 0 :(得分:0)

我不确定我的请求是否正常,因为我现在无法在真正的数据库上进行测试。但你应该这样做:

@model List<Notification>

它仅适用于PostgreSQL 9.1及更高版本。