2010-09-25 53 views
2

我有HAS_MANY的@activity的對象:clientships如何刪除其中尚未保存的父對象的has_many

當創建一個新的對象我給你幾個Clientship對象,但保存前,用戶想要挑出幾個刪除。

如何根據用戶定義的client_id刪除以下Clientship對象之一?

集合看起來是這樣的:

@activity.clientships [ 
    #<Clientship id: nil, client_id: 1770>, 
    #<Clientship id: nil, client_id: 24>, 
    #<Clientship id: nil, client_id: 25>, 
    #<Clientship id: nil, client_id: 2181,> 
] 

的示例代碼我試過了,沒有工作(更不用說低效):

@activity.clientships.map {|o| o.delete if o.client_id==24 } 
+0

這是Clientship已經保存到數據庫?或者它只是以一種形式存在? – klew 2010-09-25 10:29:08

+0

存在於窗體上,因爲它們是新記錄 – Coderama 2010-09-25 12:37:10

回答

2
@activity.clienships.delete_if{|o| o.client_id == 24} 
+0

謝謝,工作! – Coderama 2010-09-25 12:42:36

+0

'@ activity.clientships.delete(24)'應該做的訣竅。 我也建議你在'#destroy'和'#delete'之間慎重選擇。 如果你想保留回調調用,只需使用'#destroy':'@activation.clientships.destroy(24)' 另請注意,這也適用於ActiveRecord對象: 'client = Client.find(24) '@ activity.clientships.destroy(client)' – olistik 2014-02-16 21:47:13

相關問題