2013-03-07 99 views
0

我該怎麼做?從ActiveRecord-Hash中刪除元素而不刪除數據庫

all_tickets = Ticket.find(:all) 

all_tickets.each do |at| 
    if at "a condition" 
     all_tickets.delete(at) 
    end 
end 

有了這個代碼,我刪除數據庫中的元素,但我只希望從all_tickets刪除在元ActiveRecord的散列當「條件」爲真。

感謝您的幫助

+0

提示:「條件」不能通過sql發送/詢問,這是一種外部條件。所以all_tickets.find(:all,:conditions =>「條件」)將不起作用。謝謝。 – Alex 2013-03-07 21:21:21

回答

0

該解決方案已被轉換爲不使用你的每一絲SQL。總之,抓住票據,循環它們,如果條件成立,從屬性中刪除特定的鍵。最後,用這些屬性生成一個新的票據實例(不記錄)。

我知道條件是一個外部的事情,但我會建議或者添加一個attr_accessor到該條件的對象上。我會在視圖中利用這一點,以便不依賴於某個特定領域的存在或缺失來決定如何交付。我在這裏做了一些假設,但解決方案讓我對需要這種類型的操作的功能感到好奇。祝你好運。

all_tickets = Ticket.find(:all) 
processed_tickets = [] 
all_tickets.each do |ticket| 
    attributes = ticket.attributes 
    attributes.delete(:some_key) if some_condition? 
    processed_tickets << Ticket.new(attributes) 
end 
+0

請閱讀我的提示,無法通過sql詢問條件;-( all_tickets的計數是每次<10,所以迭代不應該是一個問題,謝謝! – Alex 2013-03-08 11:03:15