2014-09-04 36 views
14

bu var:Nesneyi has_many'dan kaldır ancak orijinal kaydı Raylar'da silmiyor musunuz?

Post.paragraphs << new_paragraph 

Ve id = 3 ile paragraf kaldırmak gerekir, bu nedenle şu tamamen kayıt siler:

Post.paragraphs.find(paragraph_id).destroy 
# or 
Post.paragraphs.find(paragraph_id).delete 

Sadece Has_many Derneği'nden bir paragraf kaldırmak gerekir. delete ve destroy kullanmayı denedim. Her iki yöntem de ilişkili tablolardan kayıtları tamamen siler. Onları "konteyner" den nasıl kaldırabilirim?

+0

unutmayın, ben bağımlı kaldırmak unuttuğunu: yok. Her neyse aşağıdaki cevaplar harika. – valk

cevap

32

Sen Paragraph nesne üzerinde delete yöntemi kullanmak, ancak bunun yerine bu gibi paragraphs ilişki silme yöntemi kullanmamalıdır:

post.paragraphs.delete(Paragraph.find(paragraph_id)) 
+6

, "Paragraf" ı atlayabilir ve "post.paragraphs.delete (paragraph_id)" işlevini kullanabilirsiniz. 'Fixnum' veya' String' değerlerini geçebilir, 'id'ye yanıt veren kayıtları bulur ve 'delete'' üzerinde yürütür. –

+1

@ Зелёный, bir dizi kimlik ile çalışmasını sağlamanın bir yolu var mı? Yöntemi silmek için – valk

+3

@valk pass uyarısı (*) dizisi. Bir şey gibi: dizi = [1,2,3,4] 've şimdi' post.paragraphs.delete (* dizi) '[bunun hakkında okuyun] (http://apidock.com/rails/ActiveRecord/Associations/CollectionProxy/sil) –

İlgili konular