在Rails模型关联中选择以下用例的关联的困境

时间:2019-02-05 10:28:07

标签: ruby-on-rails

在playstation应用程序中,我有一个用户模型,该模型已经具有与角色和user_roles的has_many through关联。现在,我们的要求要求我们创建一个团队模型,该模型有一个队长,而该队长是一个用户(一个用户模型记录),同时,一个团队有许多用户作为玩家。我通过以下方式实现了方案

class User < ApplicationRecord
  has_many :user_roles
  has_many :roles, through: :user_roles, :dependent => :destroy
  belongs_to :team
end

class Team < ApplicationRecord
    has_one :captain, class_name: 'User' , foreign_key: 'captain_id'
     has_many  :users, dependent: :destroy
end

我的问题是,没有团队就无法创建用户。当我创建一个新用户时,它询问team must exist。我们的计划是创建一个用户,然后将每个用户分配为玩家,然后由其中一名担任队长。因此,如果我对用例的思考过程有误,请指导我,并向我建议用例的完美关联样式。

1 个答案:

答案 0 :(得分:3)

从Rails 5开始,belongs_to关联默认情况下会验证状态。您可以使用optional选项进行更改:

class User < ApplicationRecord
  belongs_to :team, optional: true
end