我們如何在Ruby on Rails中從它的名稱字符串實例化類?如何在Rails中實例化名稱字符串中的類?
例如,我們在數據庫中以「ClassName」或「my_super_class_name」的格式命名它。
我們如何從中創建對象?
解決方案:
一直在尋找它自己,但沒有找到,所以在這兒呢。 Ruby-on-Rails API Method
name = "ClassName"
instance = name.constantize.new
它甚至可以沒有格式化,我們可以通過用戶字符串的方法.classify
name = "my_super_class"
instance = name.classify.constantize.new
當然,也許這不是很「Rails的方式」,但它解決了它的目的。
Just FYI,constantize是一個ActiveSupport方便的方法,Object.const_get'和Classify是一個ActiveSupport方法,它試圖將字符串轉換爲標準的類格式。 你正在做的事情與Evginey的回答相同,還有一些額外的檢查。雖然constantize可能是一個更好的解決方案(因爲它可以進行理智檢查),但它有助於理解您使用的工具。 – quandrum
謝謝你,說實話,沒有檢查它在手冊中做了什麼。 –