2
간단한 응용 프로그램에서 DataMapper를 사용하여 판매를 추적하고 있습니다.Datamapper - NULL 오류가 아님
class Day
include DataMapper::Resource
property :id, Serial, :key => true
property :date, DateTime
property :bestseller, String
property :total_money, Decimal
property :total_sold, Integer
property :total_orders, Integer
has n, :sales
end
과 Sales
클래스 : 나는이 같은 Day
클래스를 가지고
class Sale
include DataMapper::Resource
belongs_to :day
property :id, Serial, :key => true
property :name, String
property :amount, Integer
property :value, Integer
end
, 데이터베이스에 새 Sale
을 추가과 같이하려고 :
s = Sale.new(:day => Day.get(1), :name => "Foo", :amount => "42", :value => "42"
I save
을 호출 할 때이 오류가 발생합니다.
DataObjects::IntegrityError at /sell
sales.date may not be NULL
나는
Sale
에 더
date
속성이 없기 때문에 나는이 어디에서 오는 모르겠어요. 처음에는
Day
개체에 하루가 설정되어 있지 않아서
d = Day.get(1).date = Time.now
및
save
d 개가 발생했다고 생각했지만 오류가 해결되지 않았습니다.
무엇이 중단 되었습니까?
편집 sqlite3를 스키마
CREATE TABLE "sales" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"name" VARCHAR(50),
"amount" INTEGER,
"value" INTEGER,
"day_id" INTEGER NOT NULL,
"drink_id" INTEGER NOT NULL
);
CREATE INDEX "index_sales_day" ON "sales" ("day_id");
CREATE INDEX "index_sales_drink" ON "sales" ("drink_id");
오류의 구문이 데이터베이스에서 발생한 것 같습니다. db 콘솔에 가서 스키마를 점검 할 수 있습니까? (여기에 게시하십시오)? –
어떻게하면됩니까? 언급을 잊어 버렸습니다. 데이터베이스는 SQLite3입니다. – Nekkoru
'sqlite3'을 콘솔에 입력하고'.schema sales'를 도움말에 대해서는 .help', 종료하려면'.quit'에 입력하십시오. 이것이 프로덕션 데이터 인 경우 다른 작업은 수행하지 마십시오 (작업 할 파일의 복사본을 가져올 수도 있음) –