2012-07-14 46 views
-3

我有兩個tabels用戶和朋友,活動記錄 - 羣體教育

用戶 TABEL看起來是這樣的:

[id, name, image, location, highschool_name, highschool_year, college_name, college_year, graduteschool_name, graduate_year ] 

而且朋友 TABEL看起來是這樣的:

[id, uid, name, image, higschool_name, college_name, graduateschool_name, user_id] 

我想羣組用戶朋友通過eduaction:

  • 集團用戶朋友通過highschool_name
  • 集團用戶朋友通過college_name
  • 集團用戶朋友通過graduateschool_name

喜歡這Photoshop樣機我做:

enter image description here

我在Rails 3開發,並希望使用活躍的記錄來做到這一點,任何提示或想法是值得歡迎的。

回答

1

您應該創建高中,大學和畢業生的學校模型,並將關係用於用戶。 和朋友的數據應該在用戶模型上。

所以,你應該有

User 
    has_many :friendships 
    has_many :friends, :through => :friendships 
    has_many :inverse_friendships, :class_name => "Friendship", :foreign_key => "friend_id" 
    has_many :inverse_friends, :through => :inverse_friendships, :source => :user 
    belongs_to :higschool 
    belongs_to :college 
    belongs_to :graduateschool 

Friendship 
    belongs_to :user 
    belongs_to :friend, :class_name => "User" 

Higschool 
    has_many :users 

College 
    has_many :users 

Graduateschool 
    has_many :users 

所以,現在我認爲你可以做這樣的事情。

@higschool_friends = Hash[] 
current_user.friends.group_by(&:higschool) do | higschool, friends | 
    @higschool_friends[higschool] = friends 
end 

@college_friends = Hash[] 
current_user.friends.group_by(&:college) do | college, friends | 
    @college_friends[college] = friends 
end 

@graduateschool_friends = Hash[] 
current_user.friends.group_by(&:graduateschool) do | graduateschool, friends | 
    @graduateschool_friends[graduateschool] = friends 
end 
+0

哇,我真的需要那麼多模型嗎?我明白將來我必須爲eduaction建立一個單獨的模型,但爲什麼朋友的數據需要在用戶模型中? – SHUMAcupcake 2012-07-14 16:24:02

+0

我認爲用戶也是朋友。但是我從你對另一個答案的評論中看到你正在使用Facebook API,所以這可能不是你真正想要的。但我認爲底部的代碼應該能夠提供一個很好的想法來實現你想要的。 – 2012-07-14 16:29:16