Ruby on rails Rails 3模型与的关联有很多,属于和:通过
我正试图为一个我正在进行的小项目整合几个模型关联。我是Rails新手,所以这对我来说有点困惑 我的用例非常简单。我有一个体育联盟,它有许多分部。每个部门都有许多团队。每个队都有一名队长,并有许多球员 现在,玩家和队长都由类用户表示。唯一区别他们的是他们的角色。我正在使用CanCan来管理角色 下面是我的模型以及如何定义关联:Ruby on rails Rails 3模型与的关联有很多,属于和:通过,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我正试图为一个我正在进行的小项目整合几个模型关联。我是Rails新手,所以这对我来说有点困惑 我的用例非常简单。我有一个体育联盟,它有许多分部。每个部门都有许多团队。每个队都有一名队长,并有许多球员 现在,玩家和队长都由类用户表示。唯一区别他们的是他们的角色。我正在使用CanCan来管理角色 下面是我的模型以及如何定义关联: class Division < ActiveRecord::Base belongs_to :league has_many :teams end 类划分
class Division < ActiveRecord::Base
belongs_to :league
has_many :teams
end
类划分
class-League
class团队“用户”
接受:船长的\u嵌套\u属性\u
有很多:名册
有许多:玩家,:通过=>:名册,:来源=>:用户
为:玩家接受\u嵌套的\u属性\u
验证是否存在:name
验证名称的唯一性
结束
class用户:名册
属于:团队
结束
收集\u选择
,并将其分配给船长
属性球员们有点狡猾。通常的方法是(正如您所做的那样)将
collection\u select
与html数组name
(例如team[player\u id][]
)一起使用,在您的情况下,我想您每个团队都有一定数量的玩家,因此您只需将其显示那么多次(如果没有,您可以使用javascript为用户克隆它).我有兴趣了解定义这些模型和关联的不同方法。因为老实说,这一切都属于我,而且有很多东西让我很困惑。例如,你可以不把队长定义为一个有,而是把它作为花名册模型的一个属性。但在这种情况下使用has_one似乎很好。
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