hum*_*der 40 ruby-on-rails associations has-and-belongs-to-many
如何在不删除项目本身的情况下删除HABTM关联项目?
例如,假设我有3名学生一起参加科学课程.如何从StudentsClasses表中删除Science对象而不删除实际的Science参考?我猜这 Student.Classes.first.delete不是一个好主意.
我使用拖放式JavaScript进行添加和删除,而不是复选框.有什么想法吗?
Mic*_*aer 58
我倾向于使用has_many:through,但你试过了吗?
student.classes.delete(science)
Run Code Online (Sandbox Code Playgroud)
我认为需要拥有目标对象,而不仅仅是ID,是HABTM的限制(因为为方便起见,连接表被抽象出来).如果您使用has_many:through,您可以直接在连接表上操作(因为您获得了模型),并且可以将此类事物优化为更少的查询.
def leave_class(class_id)
ClassMembership.delete(:all, :conditions => ["student_id = ? and class_id = ?", self.id, class_id)
end
Run Code Online (Sandbox Code Playgroud)
如果您想要简单的HABTM,您需要使用
student.classes.delete(Class.find 2)
Run Code Online (Sandbox Code Playgroud)
此外,调用模型"类"是一个非常糟糕的主意.使用不属于Ruby核心的名称!
| 归档时间: |
|
| 查看次数: |
20493 次 |
| 最近记录: |