2014-04-09 15 views
17

trong Rails 4.0.4 mã này công việc:Rails 4.1 ActiveRecord :: mối quan hệ không giống như mảng

mailboxes = Mailbox.order(:mailbox) 
mailboxes.keep_if do |mailbox| 
    # test 
end 

trong Rails 4.1.0 nó phá vỡ với NoMethodError (undefined method keep_if for <Mailbox::ActiveRecord_Relation:0x5494f80>)

và phải được thay đổi để

mailboxes = Mailbox.order(:mailbox).to_a 
mailboxes.keep_if do |mailbox| 
    # test 
end 

tôi không tìm thấy bất kỳ thông tin về điều đó

Bất kỳ ý tưởng?

Trả lời

34

của nó trong release notes cho đường ray 4,1

Relation không còn có phương pháp mutator như #map! và #delete_if. Chuyển đổi thành một mảng bằng cách gọi #to_a trước khi sử dụng các phương pháp này. (Kéo Request)

Kể từ keep_if là một phương pháp mutator, nó lấy ra từ Relation

+0

Điều này giải thích tại sao tôi không thể có được một phản ứng JSON thích hợp trên của tôi 'respond_with User.all'. Nhưng làm một response_with User.all.to_a đúng cách gọi phương thức to_json của tôi, và cho tôi kết quả mong muốn. Cảm ơn! – empee

+0

đã giải quyết lỗi của tôi sau một cuộc gọi 'Modal.order':' NoMethodError (phương thức không xác định 'sort_by!' Cho # ' – Cbas

Các vấn đề liên quan