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