2
我在一個簡單的應用程序中使用DataMapper來跟蹤銷售。我有一個Day
類,像這樣: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
類:
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"
我致電save
時出現此錯誤。
DataObjects::IntegrityError at /sell
sales.date may not be NULL
我沒有date
財產Sale
,所以我不知道在哪裏,這是來自哪裏。首先,我認爲我收到的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");
錯誤的語法看起來像它可能來自數據庫。你可以進入數據庫控制檯並檢查模式(在此處發佈)? –
我該怎麼做?我忘了提及,數據庫是SQLite3。 – Nekkoru
只需在控制檯輸入'sqlite3',然後在'.help'中輸入'.schema sales'來獲得幫助,'.quit'退出。如果這是生產數據,請避免做其他事情(雖然您可以將該文件的副本用於工作) –