2012-01-19 60 views
0

在我的Rails 3.1應用程序中,我需要讀取字段的原始數據,而不需要序列化,然後在沒有序列化的情況下寫下來。這可能嗎?怎麼樣?有沒有辦法在Rails 3.1中跳過序列化?

通過系列化我的意思是

class Tenant 
    serialize :profile_template 
end 

我明明可以訪問該字段是這樣的:

> t.profile_template 
=> [{:title=>"Page 1", ....}] 

然後我也試圖與read_attribute_before_type_cast(每lucapette的建議爲):

> t.read_attribute_before_type_cast(:profile_template) 
=> nil 

使用字符串而不是符號有不同但令人失望的結果LT:

> t.read_attribute_before_type_cast("profile_template") 
=> [{:title=>"Page 1", ...}] 

,並用相同的屬性名稱:

> t.profile_template_before_type_cast 
=> [{:title=>"Page 1", ...}] 

只是爲了記錄在案,我所期待的是:

"--- 
- :title: Page 1 
...." 

在所有樣品中,...是其餘的很長的結構。

回答

1

是的,有一種方法。您必須使用

read_attribute_before_type_cast(:foo) 

其中:foo是該字段的名稱。 doc不是那麼好,但我記得在Rails 3中有一個很好的解釋。

編輯

雖然你說,這樣的工作不適合你,我又看了一遍上述書中的資料片。那麼,還有另一種方式。您可以使用

bar = foo_before_type_cast 

其中foo是該字段的名稱。它的工作方式類似於魔法發現者,預先將該字段的名稱預先寫入_before_type_cast。我現在無法嘗試,但它確實應該可以正常工作。

+0

我試過了,但是它對我而言返回零。我會修改這個問題。 – Pablo

+0

我已經更新了答案。不幸的是,我現在不能嘗試,如果可以幫助的話,我今天晚上可以做一個測試。 – lucapette

+0

我只是試過了......它給出了反序列化版本而不是字符串。我會相應地更新答案。感謝您查看此:) – Pablo

相關問題