2010-08-30 17 views
9

tôi nhận nhầm lẫn bây giờ, tôi không biết làm thế nào để xóa/hủy một bản ghi trong một bảng tham gia:Trong đường ray, làm thế nào để phá hủy một 'tham gia mục bảng' với ra xóa các hồ sơ thực sự?


class Task < ActiveRecord::Base 
    belongs_to :schema 
    belongs_to :to_do 
end 

class Todo < ActiveRecord::Base 
    belongs_to :schema 
    has_many :tasks 
end 

class Shcema < AcitveRecord::Base 
    has_many :todos 
    has_many :tasks, :through => :todos 
end 

>> sc = Schema.new 
>> sc.tasks << Task.new 
>> sc.tasks << Task.new 
>> sc.tasks << Task.new 
... 
>> sc.tasks.delete(Task.first) # I just want to delete/destroy the join item here. 
# But that deleted/destroyed the Task.first. 

tôi có thể làm gì nếu tôi chỉ muốn phá hủy mục quan hệ?

Trả lời

6

Nếu bạn muốn xóa tất cả các nhiệm vụ trong sc:

sc.tasks.delete_all 

Nếu bạn muốn xóa một nhiệm vụ cụ thể trong sc:

sc.tasks.delete_at(x) where x is the index of the task 

or 

sc.tasks.delete(Task.find(x)) where x is the id of Task 

Tôi hy vọng rằng sẽ giúp.

1

Nếu bạn muốn xóa tất cả các bản ghi từ bảng tham gia như amenities_lodgings mà không sử dụng bất kỳ đối tượng bạn có thể sử dụng:

ActiveRecord::Base.connection.execute("DELETE from amenities_lodgings") 
Các vấn đề liên quan