Hi, Discriminator cannot be used as a key because it won't be unique. The error is confusing though and it's something that we could improve. You need to specify a serial property in you base model and it will work.
Cheers # solnic On Nov 20, 1:31 pm, Zhi-Qiang Lei <[email protected]> wrote: > Dear All, > > Do I need to assign different key for each sub-model when I use single table > inheritance of datamapper? > > class Action > include DataMapper::Resource > property :type, Discriminator, :key => true > property :comment, String, :length => 140 > property :created_at, DateTime > belongs_to :loan, :key => true > end > > class Agreement < Action; end > > I got a error as follow. > > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi > grations/adapters/dm-do-adapter.rb:70:in `execute_non_query': duplicate > column name: type (DataObjects::SyntaxError) > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi > grations/adapters/dm-do-adapter.rb:70:in `block (2 levels) in > upgrade_model_storage' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi > grations/adapters/dm-do-adapter.rb:64:in `map' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi > grations/adapters/dm-do-adapter.rb:64:in `block in upgrade_model_storage' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-do-adapter-1.0.2/lib/dm-do > -adapter/adapter.rb:260:in `with_connection' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi > grations/adapters/dm-do-adapter.rb:63:in `upgrade_model_storage' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi > grations/auto_migration.rb:71:in `upgrade_model_storage' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi > grations/auto_migration.rb:143:in `auto_upgrade!' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi > grations/auto_migration.rb:145:in `auto_upgrade!' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi > grations/auto_migration.rb:45:in `block in repository_execute' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/sup > port/descendant_set.rb:69:in `block (2 levels) in each' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/sup > port/descendant_set.rb:68:in `block in each' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/sup > port/descendant_set.rb:67:in `each' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/sup > port/descendant_set.rb:67:in `each' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/sup > port/descendant_set.rb:69:in `block in each' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/sup > port/descendant_set.rb:67:in `each' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/sup > port/descendant_set.rb:67:in `each' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi > grations/auto_migration.rb:44:in `repository_execute' > from > /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi > grations/auto_migration.rb:27:in `auto_upgrade!' > from models.rb:67:in `<module:Models>' > from models.rb:15:in `<module:EIOU>' > from models.rb:9:in `<main>' > > Best regards, > Zhi-Qiang Lei > [email protected] -- You received this message because you are subscribed to the Google Groups "DataMapper" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.
