2011-05-21 52 views
1

我有一系列複選框與類別值,古典物品> <類別方案,與has_and_belongs_to_many相關聯。HABTM刪除/推送沒有對象,只有ID

事情是我不想找到追加或刪除關聯的對象,我只想使用ID,整數。

我真的照顧我的數據庫,我不想做不必要的查詢。我知道身份證存在,而物品存在,如果不存在,我不在乎。我只是想以一種乾淨的方式執行刪除操作。

不!

@item.categories << @category 
@item.categories.delete @category 

是的!

@item.categories << id 
@item.categories.delete id 

或,但這麼髒

@category = Category.new 
@category.id = id 
@item.categories << @category 
@item.categories.delete @category 

任何想法的傢伙?

回答

1

你試過

@item.category_ids << id 
@item.category_ids.delete id 

這樣,你得到的整數(的ID)的陣列,而不是與對象的數組。

+0

這是行不通的。這是一些文檔: collection_singular_ids =>返回關聯對象的ID的數組。 collection_singular_ids = ids =>將集合替換爲id中由主鍵標識的對象。 沒有collection_singular_ids <<或delete方法。 – Shinta 2011-07-29 20:59:21

+0

<<和delete是Array方法。它們應用於的數組是由您引用的文檔中的第一個方法返回的數組。該id是一個整數,順便說一句。 – Zamith 2011-08-01 23:22:42