2012-01-19 58 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

相关问题