gpt4 book ai didi

ruby-on-rails - 如何删除单个 HABTM 关联项目而不删除该项目本身?

转载 作者:行者123 更新时间:2023-12-03 07:18:38 26 4
gpt4 key购买 nike

如何删除 HABTM 关联项目而不删除该项目本身?

例如,假设我有 3 名学生一起上科学课。如何从 StudentsClasses 表中删除 Science 对象而不删除实际的 Science 引用?我猜 Student.Classes.first.delete 不是一个好主意。

我使用带有拖放功能的 JavaScript 来添加和删除,而不是复选框。有什么想法吗?

最佳答案

我倾向于使用 has_many :through,但是你尝试过吗

student.classes.delete(science)

我认为需要目标对象,而不仅仅是 ID,是 HABTM 的限制(因为为了方便起见,连接表被抽象化了)。如果您使用 has_many :through ,您可以直接在连接表上进行操作(因为您获得了一个模型),这可以让您将此类事情优化为更少的查询。

def leave_class(class_id)
ClassMembership.delete(:all, :conditions => ["student_id = ? and class_id = ?", self.id, class_id)
end

如果您想要 HABTM 的简单性,您需要使用

student.classes.delete(Class.find 2)

此外,将模型称为“类”是一个非常糟糕的主意。使用不属于 Ruby 核心的名称!

关于ruby-on-rails - 如何删除单个 HABTM 关联项目而不删除该项目本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089892/

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