0

チームリーダーとメンバー(ユーザー)をチームに割り当てたいです。1 つのチームに多くのユーザーがいて、1 人のユーザーが多くのチームに割り当てられる可能性があるため、チームとユーザー テーブルの間に "has many and through" 関連付けを作成しました。すべてのチームのチーム リードを取得するために、team_lead 列をチーム テーブルに配置しました。

疑問: 1. team_lead 列を team テーブルに配置して、チームの作成時に team リードを team に割り当てるのは正しい方法ですか。

  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

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

チーム作成時に、チームリーダーとユーザーをチームに割り当てたい。これを実装する方法。どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

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 のドキュメントを参照してください。

于 2013-05-26T09:50:42.847 に答える