2014-02-13 69 views
0

查看用戶的顯示頁面時,我想顯示用戶所在的團隊,然後顯示每個團隊成員的數量。我正試圖瞭解如何在模型中編寫方法以實現此功能。如何爲團隊功能創建活動記錄關聯

class Membership < ActiveRecord::Base 
    attr_accessible :team_id, :user_id 
    belongs_to :team 
    belongs_to :user 
end 

class Team < ActiveRecord::Base 
    attr_accessible :name, :user_id 
    belongs_to :admin, :class_name => "User",:foreign_key => "user_id" 
    has_many :memberships 
    has_many :members, through: :memberships, source: :user 
    has_many :users, through: :memberships 
end 

class User < ActiveRecord::Base 
    belongs_to :team 
    has_many :teams, through: :memberships 
    has_many :memberships 
end 

ActiveRecord::Schema.define(:version => 20140211214838) do 


create_table "memberships", :force => true do |t| 
    t.integer "team_id" 
    t.integer "user_id" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
end 


create_table "teams", :force => true do |t| 
    t.string "name" 
    t.integer "user_id" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
end 

create_table "users", :force => true do |t| 
    t.string "email", :default => "", :null => false 
    t.string "encrypted_password", :default => "", :null => false 
    t.string "reset_password_token" 
    t.datetime "reset_password_sent_at" 
    t.datetime "remember_created_at" 
    t.integer "sign_in_count", :default => 0, :null => false 
    t.datetime "current_sign_in_at" 
    t.datetime "last_sign_in_at" 
    t.string "current_sign_in_ip" 
    t.string "last_sign_in_ip" 
    t.string "image_file_name" 
    t.string "image_content_type" 
    t.integer "image_file_size" 
    t.datetime "image_updated_at" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    t.string "username" 
    t.string "bio" 
    t.string "location" 
end 

end 
+0

只需遍歷'@ user.teams',然後輸出一個團隊的'members'數量?你已經有了這些關聯,你只需要使用它們。 – sevenseacat

+0

我同意@sevenseacat,如果您需要一些代碼才能在視圖中顯示這些值,那麼您需要通過適當的教程來了解如何執行此操作。 – jvnill

回答

0

你有這些關聯,你只需要遍歷視圖中的團隊。 E.g類似:

# users/show.html.erb 
... 
<% @user.teams.each do |team| %> 
<div><%= "#{team.name} (#{team.members.count})" %></div> 
<% end %> 
... 

根據您與團隊和成員的數據做還有什麼,出於性能的原因,可能是一個好主意,eager load一些與用戶的關聯。

+0

非常感謝您的熱心指導! – TonyTau