想象一下用Ruby on Rails編寫的Web應用程序。該應用程序狀態的一部分表示爲一段不符合模型描述的數據。這個狀態描述符需要和模型一樣保存在同一個數據庫中。 它與模型的不同之處在於只需要其類的一個實例,並且它與其他類沒有關係。如何在Ruby on Rails中處理必須保存在數據庫中但不是合適模型的數據?
有沒有人遇到過這樣的事情?
想象一下用Ruby on Rails編寫的Web應用程序。該應用程序狀態的一部分表示爲一段不符合模型描述的數據。這個狀態描述符需要和模型一樣保存在同一個數據庫中。 它與模型的不同之處在於只需要其類的一個實例,並且它與其他類沒有關係。如何在Ruby on Rails中處理必須保存在數據庫中但不是合適模型的數據?
有沒有人遇到過這樣的事情?
從你的描述,我認爲軌道的設置插件應該做您的需要。
自述:
「的設置是一個插件,它管理全球關鍵的表,值對容易認爲它像保存在你的數據庫的全局散列,使用簡單的ActiveRecord像操作方法。跟蹤任何你不想硬編碼到你的Rails應用程序的全局設置,你可以存儲任何類型的對象,字符串,數字,數組或任何對象。
如果它的數據,它是在數據庫中,它是模型的一部分。
這不是一個真正的RoR問題;這是一個通用的OO設計問題。
如果是我,我可能會找到一個方法來概念化數據模型,然後就使其與工廠方法和私人構造一個單身。
另外,你可以認爲這是日誌的形式。在這種情況下,你只需要一個Logger類(也是單例),它直接讀/寫數據庫,並在每個請求的開始和結束時被調用。
在Rails中,如果數據是在數據庫中這是一個模型。在這種情況下,模型可能被稱爲「配置」,但它仍然映射到Rails系統中的ActiveRecord類。
如果這個數據是真正靜態的,你可能不需要數據庫在所有。 你可以在你的應用程序控制器使用(作爲一個例子)一個變量:
class ApplicationController < ActionController::Base
helper :all
@data = "YOUR DATA HERE"
end
有許多可用於實例數據的Rails應用程序中使用的方法。
我不知道我明白你爲什麼要說它不適合在Rails模型。
如果它只是一個複雜的數據結構,只是節省了一堆的Ruby代碼文本字段在數據庫:-)
例如,如果你有你想要保存一個複雜的嵌套散列,分配以下你的「數據」文本字段:
ComplexThing.data = complex_hash.inspect
當你想讀回,只是
complex_hash = eval ComplexThing.data
讓我指出這個解決方案2個更多的東西: