我有一個非常簡單的表,幾乎是鍵/值存儲,像DataMapper的說類型錯誤:從零的隱式轉換爲整數
class Device
include DataMapper::Resource
property :token, Text, :key => true
end
,當然我定義後調用DataMapper.finalize
,因爲我m使用Sinatra。
當我創建一個新的設備,這樣
Device.create(:token => "Foo Bar")
我得到這一切的巨型自卸
~ (0.000063) SET sql_auto_is_null = 0
~ no implicit conversion from nil to integer
TypeError: no implicit conversion from nil to integer
from /Library/Ruby/Gems/2.0.0/gems/data_objects-0.10.14/lib/data_objects/quoting.rb:12:in `quote_string'
from /Library/Ruby/Gems/2.0.0/gems/data_objects-0.10.14/lib/data_objects/quoting.rb:12:in `quote_value'
from /Library/Ruby/Gems/2.0.0/gems/data_objects-0.10.14/lib/data_objects/command.rb:69:in `block in escape_sql'
from /Library/Ruby/Gems/2.0.0/gems/data_objects-0.10.14/lib/data_objects/command.rb:62:in `gsub!'
from /Library/Ruby/Gems/2.0.0/gems/data_objects-0.10.14/lib/data_objects/command.rb:62:in `escape_sql'
from /Library/Ruby/Gems/2.0.0/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:114:in `execute_non_query'
from /Library/Ruby/Gems/2.0.0/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:114:in `block (2 levels) in create'
from /Library/Ruby/Gems/2.0.0/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:276:in `with_connection'
from /Library/Ruby/Gems/2.0.0/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:113:in `block in create'
from /Library/Ruby/Gems/2.0.0/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:85:in `each'
from /Library/Ruby/Gems/2.0.0/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:85:in `create'
from /Library/Ruby/Gems/2.0.0/gems/dm-core-1.2.1/lib/dm-core/repository.rb:146:in `create'
from /Library/Ruby/Gems/2.0.0/gems/dm-core-1.2.1/lib/dm-core/resource/persistence_state/transient.rb:74:in `create_resource'
from /Library/Ruby/Gems/2.0.0/gems/dm-core-1.2.1/lib/dm-core/resource/persistence_state/transient.rb:25:in `commit'
from /Library/Ruby/Gems/2.0.0/gems/dm-core-1.2.1/lib/dm-core/resource.rb:963:in `_persist'
from /Library/Ruby/Gems/2.0.0/gems/dm-core-1.2.1/lib/dm-core/resource.rb:977:in `block in create_with_hooks'
from /Library/Ruby/Gems/2.0.0/gems/dm-core-1.2.1/lib/dm-core/resource.rb:974:in `catch'
from /Library/Ruby/Gems/2.0.0/gems/dm-core-1.2.1/lib/dm-core/resource.rb:974:in `create_with_hooks'
from /Library/Ruby/Gems/2.0.0/gems/dm-core-1.2.1/lib/dm-core/resource.rb:1028:in `save_self'
from /Library/Ruby/Gems/2.0.0/gems/dm-validations-1.2.0/lib/dm-validations.rb:54:in `save_self'
from /Library/Ruby/Gems/2.0.0/gems/dm-core-1.2.1/lib/dm-core/resource.rb:1013:in `block in _save'
from /Library/Ruby/Gems/2.0.0/gems/dm-core-1.2.1/lib/dm-core/resource.rb:1229:in `run_once'
from /Library/Ruby/Gems/2.0.0/gems/dm-core-1.2.1/lib/dm-core/resource.rb:1012:in `_save'
from /Library/Ruby/Gems/2.0.0/gems/dm-core-1.2.1/lib/dm-core/resource.rb:412:in `save'
from /Library/Ruby/Gems/2.0.0/gems/dm-validations-1.2.0/lib/dm-validations.rb:40:in `block in save'
from /Library/Ruby/Gems/2.0.0/gems/dm-validations-1.2.0/lib/dm-validations/context.rb:16:in `in_context'
from /Library/Ruby/Gems/2.0.0/gems/dm-validations-1.2.0/lib/dm-validations.rb:40:in `save'
from /Library/Ruby/Gems/2.0.0/gems/dm-validations-1.2.0/lib/dm-validations.rb:130:in `create'
from (irb):19
from /usr/bin/irb:12
,當然當我運行中西納特拉完全相同的代碼非常類似的事情發生。我正在運行Ruby 2.0,以防萬一它不明確。
任何線索?
編輯:由於時間限制,我已經轉移到Rails,但我喜歡Sinatra,我仍然喜歡做這項工作,所以如果有人有想法,我仍然非常歡迎他們。
安裝你運行'DataMapper.auto_migrate!'?如果沒有運行它,讓我知道。 –
我已經在我的數據存儲中有一個模式,沒有必要運行它,但只是爲了好玩,我運行它(在Finalize之後,因爲還有哪些地方你甚至應該在Sinatra應用程序中運行它)?完全相同的轉儲(保存幾行數字等)。 – Morpheu5
奇怪。它適用於我的DataMapper + Sqlite + Ruby 2.0安裝程序。 'Device.all#=> [#]' –
kiddorails