Tôi có đối tượng Ruby (đối tượng ActiveRecord, cụ thể) có tên User
. Nó phản hồi các phương thức như find_by_id
, find_by_auth_token
, v.v. Tuy nhiên, đây không phải là các phương pháp được xác định qua def
hoặc define_method
. Thay vào đó, chúng là các phương thức động được xử lý thông qua method_missing
.Phương pháp # đối tượng và phản hồi động
Tôi muốn để có được một tham chiếu đến một trong những phương pháp thông qua Object#method
, ví dụ .:
User.method(:find_by_auth_token)
Nó không giống như các công trình này mặc dù. Giải pháp tốt nhất mà tôi đã đưa ra là:
proc { |token| User.find_by_auth_token(token) }
Có cách nào khác để sử dụng phương pháp bao bọc như thế này không? Tôi thực sự không thể sử dụng Object#method
cho các phương pháp động?
cho bất cứ ai tình cờ về vấn đề này trong tương lai, những phương pháp cụ tìm động sẽ hết hạn vào Rails 4.0. Cá nhân tôi rất thận trọng khi thêm chức năng bổ sung vào đầu chúng. https://github.com/rails/activerecord-deprecated_finders –