2015-04-13 11 views
6

Đường ray 4.2, active_jobs, callback_methodsCách nhận các thuộc tính công việc trong các phương thức gọi lại ActiveJob?

Trong phương pháp thực hiện công việc tùy chỉnh Tôi đã tạo bản ghi mới (và tải tệp lên S3). Làm thế nào tôi có thể vượt qua, hoặc nhận được, đó là hồ sơ mới id trong callback after_perform? Tôi muốn gửi một email after_perform với một liên kết đến tài liệu S3 ... nhưng, không chắc chắn làm thế nào để có được id bên trong phương thức after_perform. Theo các tài liệu bạn có thể sử dụng job.attributes, nhưng tôi nhận được 'thuộc tính phương thức không xác định'.

Tôi có thể di chuyển cuộc gọi thư đến phương thức thực hiện, nhưng Id thay vì xử lý đúng cách bằng cách sử dụng gọi lại. Tôi không chắc chắn cách truy cập các thuộc tính (hoặc nơi các thuộc tính đó bắt nguồn) bên ngoài phương thức thực hiện.

tôi đã cố gắng để làm một số công việc thám tử (để xác định những thuộc tính đã có sẵn để gọi lại) bằng cách đặt này trong callback:

puts "job: #{ job }" 

hoặc

puts "job: #{ job.attributes }" 

hoặc

puts "job: #{ job.attributes.first }" 

không có cách nào trong số này hoạt động và tất cả đều dẫn đến 'thuộc tính' không xác định.

Trả lời

8

Bạn phải sử dụng arguments thay vì attributes:

after_perform do |job| 
    record = job.arguments.first 
    # Do something with the record 
end 

đâu tôi thực hiện phương pháp trông giống như:

def perform(record) 
    # Perform stuff 
end 
Các vấn đề liên quan