0
這是我第一次在非rails應用程序中使用ActiveRecord,並且遇到了問題。 ActiveRecord能夠找出我在sqlite3數據庫中的列,但由於某些原因,它無法找出默認的列值。ActiveRecord顯示錯誤的列默認值
以下是有關表格的sql說明。
-- Describe ACCOUNTS
CREATE TABLE "accounts" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL DEFAULT (0),
"username" TEXT NOT NULL,
"password_hash" BLOB NOT NULL,
"creation_time" INTEGER NOT NULL DEFAULT(strftime('%s', 'now')),
"expiration_time" INTEGER NOT NULL DEFAULT(strftime('%s', 'now') + 2592000)
)
我用下面的代碼來加載我的數據庫文件。
require 'active_record'
require './config.rb'
ActiveRecord::Base.establish_connection(
:adapter => 'sqlite3',
:database => DB_FILE
)
class Account < ActiveRecord::Base
end
當我看到列缺省爲與REPL帳戶表,這是我所得到的:
[10] pry(main)> Account.column_defaults
=> {"id"=>0,
"username"=>nil,
"password_hash"=>nil,
"creation_time"=>0,
"expiration_time"=>0}
我用的ActiveRecord之前工作了Rails應用程序,它是足夠聰明到找出默認值。出於某種原因,它現在無法弄清楚它們。
難道我做錯了什麼嗎?我讀到我可以用default :id => bla
手動指定默認值,但不應該ActiveRecord能夠找出默認值?
更新:我想我找到了一個解決方法。由Account.column_defaults
返回的散列是可寫的,並且更改這些元素似乎工作正常。
由於'id'列'autoincrement',有沒有什麼辦法讓該數據庫將使用下一個ID?通常情況下,它會繼續增加id,所以如果最後一個項目的id爲12,並且您刪除了它,則下一個項目的id將爲13. –
不,該值插入到數據庫後會返回到ActiveRecord。 –