在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
。我们的计划是创建一个用户,然后将每个用户分配为玩家,然后由其中一名担任队长。因此,如果我对用例的思考过程有误,请指导我,并向我建议用例的完美关联样式。
答案 0 :(得分:3)
从Rails 5开始,belongs_to
关联默认情况下会验证状态。您可以使用optional
选项进行更改:
class User < ApplicationRecord
belongs_to :team, optional: true
end