2014-11-04 22 views
0

我想创建一个具有嵌套散列结构的列。如何在sql数据库的一列中存储一个类的实例方法名?

结构柱:

column_name: company 
    { production=> {watch=> "yes",pen =>"no",pencil => "yes"} 
     quality => {life_test =>"yes", strong_test =>"yes", flexibility_test => "no"} 
    } 

这里生产,质量是我的模型,手表,钢笔,铅笔,life_test,strong_test是各自班级的我的实例方法。每个实例方法将从视图页面获取布尔值。 如何实现这个结构。

回答

1

这就是所谓的序列化,这是非常容易的。你可以做到以下几点:

class Something < ActiveRecord::Base 
    serialize :company, JSON 
end 

bar = Something.new 
bar.company = { :production=> {:watch=> true,:pen => false, :pencil => false} 
     :quality => {:life_test =>true, :strong_test =>true, :flexibility_test => false} } 
bar.save 

如果您想了解更多信息请点击这里:http://api.rubyonrails.org/classes/ActiveRecord/Base.html和“保存数组,散列和其他非可映射在文本列对象”阅读部分,只要确保你的公司列该数据库是一个文本列。

+0

非常感谢您的回复。在这里我有一个问题,我有一个模型,它没有在Active记录中的表格,并有一个实例方法。我想在“功能”表中添加一个列公司 – 2014-11-04 07:00:15

+0

该模型在数据库中根本没有表格? – NateSHolland 2014-11-04 07:02:19

+0

是的。那种模式并没有做任何新的事情,只是分享一些其他模型的工作,如调用邮件发送邮件。 – 2014-11-04 07:06:33

0

使用序列化将散列存储在数据库中。

关注API link

相关问题