假設我有一些 ActiveRecord 實體。我怎樣才能讓 rails 在它保存在資料庫中之前映射它的一個欄位,但不更改記憶體中記錄的值?
before_save回呼似乎修改值不僅僅是為了保存它。
此示例通過n使用n -> n*2(可逆映射器)映射欄位來顯示所需的行為
x = MyRecord.create(n: 2)
x.n
=> 2
x.save() # database should now contain value 4 in col n
x.n
=> 2 # value is still 2 (map only affects values in db)
更具體地說,我想使用 Marshal.dump 和 Marshal.load 來(反)序列化我的記錄欄位,以便資料庫將它們包含為 blob。
uj5u.com熱心網友回復:
在您的代碼中,MyRecord.create(n: 2)實際上將記錄保存到資料庫中。
如果要使用自定義序列化(例如在欄位的存盤和記憶體格式之間進行 Marshall)。然后您可以使用自定義值型別,請參閱:https : //api.rubyonrails.org/classes/ActiveRecord/Attributes/ClassMethods.html(在創建自定義型別下)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/384608.html
