2010-07-01 70 views
0

我只是開始使用DataMappers關聯,只是爲了測試事情有一個非常簡單的表結構,它是borking。DataMapper關聯,簡單的代碼,不起作用

require 'dm-core' 
require 'dm-migrations' 

DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/dbtest.db") 

    class Account 
     include DataMapper::Resource 
     property :id, Serial 
     has 1, :userprofile, :model =>"UserProfile" 
    end 

    class UserProfile 
     include DataMapper::Resource 
     property :id, Serial 
     belongs_to :Account 
    end 
DataMapper.finalize #whether I have this before or after auto migrate the result is the same 
DataMapper.auto_migrate! 

這應該只是工作,很好,很簡單,DM是一切工作(我已經使用它很多)。

下面是結果,當我運行此代碼,任何人都知道問題是什麼?:

DataObjects::SyntaxError: duplicate column name: account_id (code: 1, sql state: , query: CREATE TABLE "user_profiles" ("id" INTEGER NOT NULL PRIMARY 
KEY AUTOINCREMENT, "account_id" INTEGER NOT NULL, "account_id" INTEGER NOT NULL), uri: sqlite3://d/Borrow/dbtest.db) 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-migrations-1.0.0/lib/dm-migrations/adapters/dm-do-adapter.rb:92:in `execute_non_query' 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-migrations-1.0.0/lib/dm-migrations/adapters/dm-do-adapter.rb:92:in `create_model_storage' 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-migrations-1.0.0/lib/dm-migrations/adapters/dm-do-adapter.rb:90:in `each' 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-migrations-1.0.0/lib/dm-migrations/adapters/dm-do-adapter.rb:90:in `create_model_storage' 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-do-adapter-1.0.0/lib/dm-do-adapter/adapter.rb:260:in `with_connection' 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-migrations-1.0.0/lib/dm-migrations/adapters/dm-do-adapter.rb:85:in `create_model_storage' 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-migrations-1.0.0/lib/dm-migrations/auto_migration.rb:79:in `create_model_storage' 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-migrations-1.0.0/lib/dm-migrations/auto_migration.rb:175:in `auto_migrate_up!' 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-migrations-1.0.0/lib/dm-migrations/auto_migration.rb:130:in `auto_migrate!' 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-migrations-1.0.0/lib/dm-migrations/auto_migration.rb:45:in `send' 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-migrations-1.0.0/lib/dm-migrations/auto_migration.rb:45:in `repository_execute' 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-core-1.0.0/lib/dm-core/model/descendant_set.rb:33:in `each' 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-core-1.0.0/lib/dm-core/model/descendant_set.rb:33:in `each' 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-migrations-1.0.0/lib/dm-migrations/auto_migration.rb:44:in `repository_execute' 
     from d:/Ruby/lib/ruby/gems/1.8/gems/dm-migrations-1.0.0/lib/dm-migrations/auto_migration.rb:22:in `auto_migrate!' 

回答

3

UserProfile,嘗試指定小寫:account,就像這樣:

belongs_to :account 

而且,如果按照慣例在Account,

,
has 1, :user_profile 
中增加 :user_profile關係中的下劃線

您可以刪除:model密鑰。