📅  最后修改于: 2023-12-03 15:09:09.861000             🧑  作者: Mango
在 Ruby 中,当我们不再需要模型之间相互关联时,需要放下模型导轨,以避免数据冗余和性能问题。
Active Record 是 Ruby on Rails 中最常用的 ORM 工具。通过使用 Active Record 提供的关联方法,我们可以在模型之间创建关系。取消这些关系同样使用 Active Record 提供的方法。
当一个模型(a) belongs_to 另一个模型(b)时,取消关系的方法为在 a 模型中使用 belongs_to 方法的可选参数::optional
。
To cancel the relationship between models A and B, remove the option from the A model using the belongs_to
method:
class A < ApplicationRecord
belongs_to :b, optional: true
end
当一个模型(a)has_one或has_many另一个模型(b)时,我们需要在 a 模型中使用许多方法来取消关系。
例如,以下代码片段将从 a 模型中删除 b 模型:
class A < ApplicationRecord
has_one :b
end
class B < ApplicationRecord
belongs_to :a
end
a = A.find(params[:id])
b = a.b
a.b = nil
b.destroy
当两个模型之间使用 has_and_belongs_to_many 关联时,我们需要手动删除关联表中的行。
例如,以下代码将删除关联表中在 a 模型中删除特定行:
class A < ApplicationRecord
has_and_belongs_to_many :bs
end
class B < ApplicationRecord
has_and_belongs_to_many :as
end
a = A.find(params[:id])
b = a.bs.find(params[:b_id])
a.bs.delete(b)
在 Ruby 中放下模型导轨的方法因模型之间的关系而异。使用适当的 Active Record 关联方法将允许您轻松取消关联。我们需要在仔细查看模型之间的关系后选择正确的方法。