在我的軌道模型中,我有一個存儲一些元信息的JSON列。 這是要從用戶輸入的形式。正確的方式來定義模型上的虛擬屬性在軌道中JSON列中的鍵
由於JSON列的鍵不是模型的屬性,我不能直接在form_for
中使用它們,而是需要定義一個虛擬屬性。
由於這個虛擬屬性的數量可能變得任意長,我想使用元編程來定義屬性。
但我在this question上試過了答案,但是當我在模型中使用常量時出現一個錯誤,說明該常量是未定義的。所以我直接在數組中添加了鍵的符號,並在模塊中迭代它們。當我這樣做時,我得到一個錯誤,說堆棧層次太深。
請有人可以幫我一下嗎?
謝謝您的答覆。我不知道這件事。如果你不介意,那麼請你能告訴我哪個方法應該是首選的('store_accessor'或在迭代器中使用'define_method'),爲什麼? –
你應該使用Rails和Rails核心庫提供的方法和宏來避免核心lib方法的重複,Rails代碼庫有很好的測試覆蓋率。但是你的答案也適合於教育目的。 + 1 –
_好的編碼器可以編寫新的代碼,忍者編碼器可以使舊的代碼再次工作._ –