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.

Reply via email to