Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3模型与的关联有很多,属于和:通过_Ruby On Rails_Activerecord - Fatal编程技术网

Ruby on rails Rails 3模型与的关联有很多,属于和:通过

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 类划分

我正试图为一个我正在进行的小项目整合几个模型关联。我是Rails新手,所以这对我来说有点困惑

我的用例非常简单。我有一个体育联盟,它有许多分部。每个部门都有许多团队。每个队都有一名队长,并有许多球员

现在,玩家和队长都由类用户表示。唯一区别他们的是他们的角色。我正在使用CanCan来管理角色

下面是我的模型以及如何定义关联:

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