0
我创建了具有两个属性名称和值的变量模型,用于在我的网站中保存任何选项。我想知道的是,我是否需要像serialize这样的特殊方法来让rails在读取之后或写入db之前识别数据类型?我需要使用任何特殊的方法来使轨道识别db中的数据类型吗?
我尝试没有serialize:值,但只有数据类型工作是阵列哈希和字符串其他人不。
和每件事情都很好,但它确实是吗?如果是的话,为什么轨道有这种方法
serialize。
这是我的代码存储在所述数据库中的对象作为一个ActiveRecord模型的属性时,才需要
class CreateVariables < ActiveRecord::Migration
def self.up
create_table :variables do |t|
t.string :name
t.text :value
t.timestamps
end
add_index :variables, :name, :unique => true
end
def self.down
drop_table :variables
end
end
class Variable < ActiveRecord::Base
validates_uniqueness_of :name
validates_presence_of :name, :value
end
从我尝试,我不能检索int和float作为它的类型。使用Variable.create(:name =>'int',:value => 123)和Variable.find_by_name('int')。value。它返回“123”不是123.之后,我尝试了序列化:值,但没有任何工作既复杂,也不复杂 – sarunw 2009-12-13 09:10:09
问题是你的数据库字段不是数字类型(整数/十进制/浮点数/等)。如果你没有处理数据结构,序列化不会做任何事情。你也可以考虑为ActiveRecord :: Base#Serialzie提供一个对象参数,这样事物总是以相同的方式解释。 – EmFi 2009-12-14 05:35:47
我使用数据库字段作为文本,目的是将它用作变量保存器,无论是int,float,string,array,hash。起初我认为序列化会像在PHP中序列化和反序列化,但不是。我曾试过元帅,但sqlite显示错误“无法识别的令牌”。不知道该怎么做。 – sarunw 2009-12-14 08:23:48