2013-05-26 31 views
0

我想分配團隊領導和成員(用戶)團隊。我創建了「在團隊和用戶表之間具有許多」貫穿「關係,因爲一個團隊可能擁有多個用戶,並且可以將一個用戶分配給多個團隊。爲了讓每個團隊獲得團隊領導權,我已將team_lead列放在團隊表中。決定團隊領導和分配用戶在紅寶石軌道上的團隊

懷疑:1.是否有正確的方式將team_lead列置於球隊表中,以便在球隊創建時將球隊領先分配給球隊。

  1. 當一個團隊被創建​​時,它將有一個團隊負責人和一些已經存在於db中的用戶。如何將用戶分配給團隊?

user.rb

class User < ActiveRecord::Base 
    has_many :teams, through: :user_teams 
    has_many :user_teams 
    # Include default devise modules. Others available are: 
    # :token_authenticatable, :confirmable, 
    # :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    # Setup accessible (or protected) attributes for your model 
    attr_accessible :username, :email, :password, :password_confirmation, :remember_me, :first_name, :last_name, :is_admin, :contact_no, :birth_date, :joining_date, :is_active, :is_hr, :is_manager 
    # attr_accessible :title, :body 
end 

team.rb

class Team < ActiveRecord::Base 
    attr_accessible :name 
    has_many :user_teams 
    has_many :users, through: :user_teams 
end 

team_user.rb

類TeamsUser <的ActiveRecord :: Base的 attr_accessible:TEAM_ID,:team_lead,:USER_ID belongs_to:用戶 belongs_to:團隊 結束

在團隊創建時,我想將團隊負責人和用戶分配給團隊。如何實現這一點。任何幫助,將不勝感激。謝謝。

回答

1

您可以使用has_and_belongs_to_many更容易地爲用戶和團隊之間的多對多關係工作室建模。

然後你的模型是這樣的:

class User 
    has_and_belongs_to_many :teams 

    ... 
end 

class Team 
    has_and_belongs_to_many :users 
    has_one :team_lead, class_name: "User" 

    ... 
end 

注意Team也有team_lead,這也是User類型。

然後可以很容易地創建一個新的團隊,團隊負責人:

team = Team.new 
team.team_lead = existing_user1 
team.users << existing_user2 
team.save 

爲了讓許多到許多關係的工作,你還需要一個連接表稱爲teams_users。有關設置多對多關係的更多信息,請參閱Rails documentation

+0

嗨fivedigit,謝謝你的回覆。我需要創建team_lead表還是現有的用戶表足以獲得團隊領導和用戶。我已經有team_users表。 –

+0

團隊領導位於「用戶」表中。請注意,您需要一個名爲'teams_users'的連接表(複數名稱)。請閱讀Rails Docs的鏈接部分,其中說明了如何執行此操作。 – fivedigit