gpt4 book ai didi

ruby-on-rails - 用户和团队之间的关联和迁移(rails)

转载 作者:数据小太阳 更新时间:2023-10-29 08:31:58 25 4
gpt4 key购买 nike

我有这个用户和团队模型,它具有以下关联:

用户.rb

class User < ActiveRecord::Base
belongs_to :team

团队.rb

class Team < ActiveRecord::Base
has_many :users
has_one :leader, class_name: "User", foreign_key: "leader_id"
belongs_to :manager, class_name: "User", foreign_key: "manager_id"

但我似乎无法想象将其正确地表示为迁移。一开始,我是这样做的:

class AddTeamIdToUsers < ActiveRecord::Migration
def change
add_column :users, :team_id, :integer
add_index :users, :team_id
end
end

class AddUsersToTeams < ActiveRecord::Migration
def change
add_reference :teams, :leader, index: true
add_reference :teams, :manager, index: true
end
end

当然,我在 AddTeamToIdUsers 上所做的是一个多对一的关联,因为一个 Team 可以有很多 Users,但是leader position 应该只特定团队独有(成员也一样,他们不应该属于其他团队)。但是,经理可以有很多团队要管理。回到我关心的问题,如何将我的场景表示为迁移?或者我应该在我的联想中做出什么调整?在考虑必要的调整和解决方案后,应用程序是否会在添加/更新团队时自动遵循关联规则?

最佳答案

您的迁移看起来是正确的,但您的关联并不完整:

class User < ActiveRecord::Base
belongs_to :team
has_one :leading_team, class_name: 'Team', foreign_key: 'leader_id'
has_many :managed_teams, class_name: 'Team', foreign_key, 'manager_id'

class Team < ActiveRecord::Base
has_many :users
belongs_to :leader, class_name: "User"
belongs_to :manager, class_name: "User"

你应该一切就绪。

关于ruby-on-rails - 用户和团队之间的关联和迁移(rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com