Làm thế nào chúng ta có thể khởi tạo lớp từ chuỗi tên của nó trong Ruby-on-Rails?Làm thế nào để khởi tạo lớp từ chuỗi tên trong Rails?
Ví dụ: chúng tôi có tên trong cơ sở dữ liệu ở định dạng như "ClassName" hoặc "my_super_class_name".
Cách chúng tôi có thể tạo đối tượng từ nó?
Giải pháp:
Đang tìm kiếm bản thân mình, nhưng không tìm thấy, vì vậy ở đây nó được. Ruby-on-Rails API Method
name = "ClassName"
instance = name.constantize.new
Có thể thậm chí không được định dạng, chúng ta có thể sử dụng chuỗi phương pháp .classify
name = "my_super_class"
instance = name.classify.constantize.new
Tất nhiên có lẽ đây không phải là rất 'Rails cách', nhưng nó giải quyết mục đích của nó.
Chỉ cần FYI, hằng số là một phương thức tiện lợi ActiveSupport mà 'Object.const_get' và Classify là một phương thức ActiveSupport cố gắng biến chuỗi thành định dạng lớp chuẩn. Những gì bạn đang làm giống hệt với câu trả lời của Evginey, với một số kiểm tra bổ sung. Trong khi hằng số có lẽ là một giải pháp tốt hơn (vì nó kiểm tra sự lành mạnh), nó giúp hiểu các công cụ bạn sử dụng. – quandrum
Cảm ơn bạn vì điều này, phải trung thực đã không kiểm tra những gì nó làm trong hướng dẫn sử dụng. –