4
我想在rails中使用模型的默认值。我所见过的最好的记录方式是在迁移中使用:default参数。但是,它看起来像只适用于值。我正在尝试设置默认表达式,具体为currval('customers_id_seq'::regclass)
。我可以手动添加默认表达式,但我无法弄清楚如何告诉rails使用默认值。创建模型对象时如何使用此默认值?如何在ActiveRecord中使用默认的sql表达式?
EDIT 下面是一个更具体的例子:
class CreateTestmodels < ActiveRecord::Migration
def up
create_table :testmodels do |t|
t.integer :idxfield, :null=>false
t.string :datafield
t.timestamps
end
execute("ALTER TABLE testmodels ALTER COLUMN idxfield SET DEFAULT currval('testmodels_id_seq'::regclass)")
end
def down
drop_table :testmodels
end
end
利用这种迁移,我可以运行insert into testmodels (datafield) VALUES ('sometestdata');
,这将表中增加一个行,其中idxfield
默认为id
。
但是,如果我从rails控制台运行Testmodel.create(:datafield=>"testdata")
,它会将空值替换为idxfield
并引发异常。
我已经成功使用执行的字段。然而,我无法弄清楚如何使轨道实际上使用默认,当我运行。创建链接到此表的模型。 – Belly