簡體   English   中英

與has_many,belongs_to和:through的Rails 3模型關聯

[英]Rails 3 Model associations with has_many, belongs_to and :through

我正在嘗試為我正在從事的一個小型項目建立幾個模型關聯。 我是Rails的新手,所以這一切令我感到困惑。

我的用例非常簡單。 我有一個體育聯賽有多個 分區 每個部門 都有許多 團隊 每個 都有一名 隊長,有許多 隊員

現在,玩家和隊長都由班級用戶代表。 唯一使他們與眾不同的是他們的角色。 我正在使用CanCan來管理角色。

現在是我的模型以及如何定義關聯:

class Division < ActiveRecord::Base
  belongs_to :league
  has_many :teams
end

class League < ActiveRecord::Base
  has_many :divisions
end

class Team < ActiveRecord::Base
  belongs_to :division
  accepts_nested_attributes_for :division

  has_one :captain, :class_name => "User"
  accepts_nested_attributes_for :captain

  has_many :rosters
  has_many :players, :through => :rosters, :source => :user
  accepts_nested_attributes_for :players

  validates_presence_of :name
  validates_uniqueness_of :name
end

class User < ActiveRecord::Base
  has_many :authentications
  has_many :rosters
  has_many :teams, :through => :rosters
  belongs_to :team
end

這是我生成的模式文件。

  1. 我是否正確定義了模型關聯?
  2. 創建或編輯團隊時,如何分配一名球員或隊長到團隊?

任何幫助將不勝感激。

  1. 這個定義對我來說似乎還可以。 (當然)還有其他方法可以做到這一點,但是這似乎還可以。

  2. 這種類型取決於您的UI。 隊長應該足夠簡單-執行collection_select並將其分配給captain屬性。

玩家比較棘手。 通常的方法是(與您一樣)使用帶有html數組name (例如team[player_id][] )的collection_select ,並且在您的情況下,我想您每個團隊都有一定數量的球員,因此您只需顯示它次(如果沒有,您可以使用javascript為用戶克隆它)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM