Tôi có một lớp được gọi là Note
, bao gồm một biến mẫu được gọi là time_spent
. Tôi muốn có thể làm một việc như sau:Tôi làm cách nào để sử dụng mixin Enumerable trong lớp học của mình?
current_user.notes.inject{|total_time_spent,note| total_time_spent + note.time_spent}
Điều này có thể bằng cách trộn trong Enumerable module? Tôi biết bạn có nghĩa vụ phải thêm include Enumerable
vào lớp và sau đó xác định phương thức each
, nhưng phương pháp mỗi phải là một lớp hoặc phương pháp thể hiện? Điều gì xảy ra trong phương thức each
?
Tôi đang sử dụng của Ruby 1.9.2
Xin lỗi nếu câu hỏi của tôi là tránh khỏi thất bại, nhưng vì 'current_user.notes' đã là một mảng, có nghĩa là nó đã bao gồm Enumerable, tại sao bạn cần phải làm gì hơn? Ví dụ của bạn có thể đã chạy với một thay đổi nhỏ: 'current_user.notes.inject (0) {| total_time_spent, note | total_time_spent + note.time_spent} ' –
Hoặc nếu bạn đang sử dụng đường ray:' current_user.notes.sum (&: time_spent) ' – aidan