레일에서 모델의 기본값을 사용하려고합니다. 이 작업을 수행하는 가장 좋은 방법은 마이그레이션에서 : default 매개 변수를 사용하는 것입니다. 그러나 이것은 값에 대해서만 작동하는 것처럼 보입니다. 기본 표현식, 특히 currval('customers_id_seq'::regclass)
을 설정하려고합니다. 직접 기본 표현식을 추가 할 수는 있지만 레일스에 기본값을 사용하는 방법을 알 수는 없습니다. 모델 객체를 만들 때이 기본값을 어떻게 사용할 수 있습니까? 나는 어디 idxfield
기본값 id
에 테이블에 행을 추가 할 것이다, insert into testmodels (datafield) VALUES ('sometestdata');
를 실행할 수 있습니다이 마이그레이션으로ActiveRecord에서 기본 SQL 식을 사용하는 방법?
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
:
편집 다음은보다 구체적인 예이다.
그러나 레일 콘솔에서 Testmodel.create(:datafield=>"testdata")
을 실행하면 idxfield
을 null로 대체하고 예외를 throw합니다.
내가 했어 성공처럼
create_table
외부의 ALTER 테이블을 실행하고 직접 추가해야합니다 실행을 사용하는 필드. 그러나이 테이블에 링크 된 모델에서 .create를 실행할 때 레일을 실제로 기본값으로 사용하는 방법을 알아낼 수 없습니다. – Belly