2012-08-06 55 views
0

我有一個基本的社交網絡。 我想創建一個返回用戶數組的朋友方法。某些user :ids屬於:user_id屬性,有些屬於:friend_id屬性。我不想退還current_user.id。我只想返回:name,:id:uid屬性。我不知道該從哪裏出發。找朋友並創建用戶數組

我希望我簡化一下,請告訴我,如果我的問題是缺乏信息。

謝謝!

class User < ActiveRecord::Base 
    has_many :friendships, :conditions => {:accepted => true} 
    has_many :inverse_friendships, :class_name => "Friendship", :foreign_key => "friend_id", :conditions => {:accepted => true} 

    attr_accessible :name, :oauth_expires_at, :oauth_token, :provider, :uid 

    def friends 
    friendships.preload(:friend) + inverse_friendships.preload(:user) 
    end 
end 

class Friendship < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :friend, :class_name => "User" 
    attr_accessible :accepted, :friend_id, :user_id, :friend 
end 
+0

問題是有些含糊,什麼是你的模型中的列? – Ari 2012-08-06 15:56:05

+0

對不起,如果有點不清楚。我更新了它。你需要更多信息嗎? – Dol 2012-08-06 16:00:59

回答

0

如何:

class User 
    ... 
    def friends 
    friendships.map { |f| [f.name, f.id, f.uid] } 
    end 

end 
+0

差不多....沒有映射友誼我需要映射友誼的用戶。對不起,也許我的問題還不夠清楚。但你的答案幫助我找到答案,因爲你的方法是正確的!答案是:friendships.preload(:friend).map {| f | [f.friend.name,f.friend.id,f.friend.uid]} + inverse_friendships.preload(:user).map {| f | [f.user.name,f.user.id,f.user.uid]}。全部在一行中。所以,如果你改變你的答案,我會標記爲未來的編碼人員很容易找到正確的。謝謝!! – Dol 2012-08-07 08:51:22

+0

有沒有辦法顯示屬性呢?該數組作爲原始數據出現,在視圖中調用時它不理解。 – Dol 2012-08-07 09:14:28