셋업은 다음과 같습니다. 레일즈 3.0.1과 PostgreSQL 9.0 데이터베이스를 사용하고 있습니다. 내 모델을 서브 모듈로 구성했습니다.데이터베이스로 PostgreSQL을 사용하여 레일스에 새 객체를 만들 때 ID가 없습니다.
콘솔을 사용하여 새 종류의 객체 (c = ::Physical::Base::Contact.new
)를 만들고 저장할 때 객체의 ID가 자동으로 채워지지 않습니다. 데이터베이스에 기록되지만 객체는 가지고 있습니다. 방금 생성 한 것은 PostgreSQL의 시퀀스에 의해 생성 된 ID를 기록하지 않습니다. 테이블을 생성하기위한 마이 그 레이션 스크립트는 다음과 같습니다. 필자는 직접 작성하고 표준 레일 생성 기능을 사용하지 않고 테이블을보다 잘 제어합니다.
표준 PostgreSQL + Rails 동작입니까, 아니면 직접 마이 그 레이션을 작성하여 뭔가가 누락 되었습니까?
class Contact < ActiveRecord::Migration
def self.up
execute "
create table contacts(
id serial,
contact_type_id integer not null check (contact_type_id > 0),
value text not null check (length(value) > 0)
)
"
end
def self.down
execute "
drop table contacts;
"
end
end