class Team < ApplicationRecord
has_many :players, dependent: :nullify
end
class Player < ApplicationRecord
belongs_to :team, optional: true
end
说我有2个ActiveRecord模型-Team
和Player
,具有简单的父/子关系
class Team < ApplicationRecord
has_many :players
end
class Player < ApplicationRecord
belongs_to :team
end
Rails提供了类似dependent: :destroy
的选项,用于指定在销毁父级时子级关联会发生什么。
但是,当我Player
和destroy
时我不一定要销毁Team
怎么办?相反,我想取消设置每个team_id
的Player
字段,然后安全地destroy
设置Team
。
是否有最佳做法来做到这一点?
我的想法是-
在before_destroy
上定义一个Team
钩子,以清除其各个播放器上的Player#team_id
在after_rollback
上定义一个Team
钩子,该钩子处理必须回退某些内容的情况。这会将team_id
的[[re-add应用于所有Player
模型,基本上颠倒了我们刚才所做的工作]]
很想知道是否有人采用更简单的方法。
谢谢!
说我有2个ActiveRecord模型-Team和Player,具有简单的父/子关系类Team
class Team < ApplicationRecord
has_many :players, dependent: :nullify
end
class Player < ApplicationRecord
belongs_to :team, optional: true
end
请参见options for the dependent option。
class Team < ApplicationRecord
has_many :players, dependent: :nullify
end
class Player < ApplicationRecord
belongs_to :team, optional: true
end