2017-05-03 130 views
0

我有以下2個表Rails的 - 按父母屬性

表 「public.friendships」

Column |   Type    | 
------------+-----------------------------+ 
id   | integer      | 
user_id | integer      | 
friend_id | integer      | 
created_at | timestamp without time zone | 
updated_at | timestamp without time zone | 

表 「public.users」 這些表之間

  Column   |   Type    | 
------------------------+-----------------------------+ 
id      | integer      | 
encrypted_password  | character varying(128)  | 
password_salt   | character varying(128)  | 
email     | character varying(255)  | 
. 
. 
. 
. 

協會是如下

#user.rb 
has_many :friendships, class_name: 'Friendship', :foreign_key => 'user_id', :dependent => :destroy 

#friendship.rb 
belongs_to :user, :class_name => 'User' 
belongs_to :friend, :class_name => 'User', :foreign_key => 'friend_id' 

我正試圖找到用戶的所有友誼

@user = current_user 
@friendships = @user.friendships 

一切都很好。但我想列出當前用戶的所有朋友,按其first_name的字母順序排序。我試過

@friendships = @user.friendships.order(:first_name) 

當然不起作用。這樣做的正確方法是什麼?

回答

1

你可以把在has_many

has_many :friendships, -> { joins(:user).order('users.first_name') }, foreign_key: 'user_id', dependent: :destroy 

訂單條款,那麼這將自動工作

@friendships = @user.friendships 
+0

當我使用這個我得到'PG :: UndefinedColumn:ERROR:列friendships.first_name不存在 LINE 1:... ERE「友誼」。「user_id」= $ 1 ORDER BY「友誼...」 ^ :SELECT「友誼」。*來自「友誼」WHERE「友誼」。「user_id」= $ 1 ORDER BY「f riendships「。」當我試着做'<%@ friendships.each do | friendship | %>'在我看來 –

+0

@TonyVincent好吧,我誤解了你的問題,去編輯。如果這不起作用,我就去咖啡機(儘管我不喝咖啡) – Iceman