On Dec 26, 6:19 pm, Julien Estebane <julienesteb...@gmail.com> wrote: > Hello Frederick, > > As you suggested, i attempted to include this in my scaffold, but when I > rake db:migrate, I get the error: >
You probably don't want to include the has_many - since that requires a column on the other table. Other than that, take a look at the generated migration. To be honest i don't bother with the belongs_to shortcuts for migrations - I just add the columns as 'normal' columns and then edit the model Fred > user@user-user:~/dev/myapp$ rails generate scaffold engine > belongs_to:environment belongs_to:state > invoke active_record > create db/migrate/20121226181404_create_engines.rb > create app/models/engine.rb > invoke test_unit > create test/unit/engine_test.rb > create test/fixtures/engines.yml > invoke resource_route > route resources :engines > invoke scaffold_controller > create app/controllers/engines_controller.rb > invoke erb > create app/views/engines > create app/views/engines/index.html.erb > create app/views/engines/edit.html.erb > create app/views/engines/show.html.erb > create app/views/engines/new.html.erb > create app/views/engines/_form.html.erb > invoke test_unit > create test/functional/engines_controller_test.rb > invoke helper > create app/helpers/engines_helper.rb > invoke test_unit > create test/unit/helpers/engines_helper_test.rb > invoke assets > invoke coffee > create app/assets/javascripts/engines.js.coffee > invoke scss > create app/assets/stylesheets/engines.css.scss > invoke scss > create app/assets/stylesheets/scaffolds.css.scss > user@user-user:~/dev/myapp$ rails generate scaffold environment > description:string has_many:engines > invoke active_record > create db/migrate/20121226181441_create_environments.rb > create app/models/environment.rb > invoke test_unit > create test/unit/environment_test.rb > create test/fixtures/environments.yml > invoke resource_route > route resources :environments > invoke scaffold_controller > create app/controllers/environments_controller.rb > invoke erb > create app/views/environments > create app/views/environments/index.html.erb > create app/views/environments/edit.html.erb > create app/views/environments/show.html.erb > create app/views/environments/new.html.erb > create app/views/environments/_form.html.erb > invoke test_unit > create test/functional/environments_controller_test.rb > invoke helper > create app/helpers/environments_helper.rb > invoke test_unit > create test/unit/helpers/environments_helper_test.rb > invoke assets > invoke coffee > create app/assets/javascripts/environments.js.coffee > invoke scss > create app/assets/stylesheets/environments.css.scss > invoke scss > identical app/assets/stylesheets/scaffolds.css.scss > user@user-user:~/dev/myapp$ rails generate scaffold state > description:string has_many:engines > invoke active_record > create db/migrate/20121226181504_create_states.rb > create app/models/state.rb > invoke test_unit > create test/unit/state_test.rb > create test/fixtures/states.yml > invoke resource_route > route resources :states > invoke scaffold_controller > create app/controllers/states_controller.rb > invoke erb > create app/views/states > create app/views/states/index.html.erb > create app/views/states/edit.html.erb > create app/views/states/show.html.erb > create app/views/states/new.html.erb > create app/views/states/_form.html.erb > invoke test_unit > create test/functional/states_controller_test.rb > invoke helper > create app/helpers/states_helper.rb > invoke test_unit > create test/unit/helpers/states_helper_test.rb > invoke assets > invoke coffee > create app/assets/javascripts/states.js.coffee > invoke scss > create app/assets/stylesheets/states.css.scss > invoke scss > identical app/assets/stylesheets/scaffolds.css.scss > user@user-user:~/dev/myapp$ rake db:create > user@user-user:~/dev/myapp$ rake db:migrate > == CreateEngines: migrating > ================================================== > -- create_table(:engines) > rake aborted! > An error has occurred, this and all later migrations canceled: > > undefined method `environment' for > #<ActiveRecord::ConnectionAdapters::TableDefinition:0x00000001ca2ff0> > /home/user/temp/project/db/migrate/20121226181404_create_engines.rb:4:in > `block in change' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/connection_adapters/abstract/schema_statements.rb:160:in > `create_table' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:466:in > `block in method_missing' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:438:in > `block in say_with_time' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:438:in > `say_with_time' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:458:in > `method_missing' > /home/user/temp/project/db/migrate/20121226181404_create_engines.rb:3:in > `change' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:407:in > `block (2 levels) in migrate' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:407:in > `block in migrate' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/connection_adapters/abstract/connection_pool.rb:129:in > `with_connection' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:389:in > `migrate' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:528:in > `migrate' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:720:in > `block (2 levels) in migrate' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:775:in > `call' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:775:in > `block in ddl_transaction' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/connection_adapters/abstract/database_statements.rb:192:in > `transaction' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/transactions.rb:208:in > `transaction' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:775:in > `ddl_transaction' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:719:in > `block in migrate' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:700:in > `each' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:700:in > `migrate' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:570:in > `up' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/migration.rb:551:in > `migrate' > /home/user/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_rec > ord/railties/databases.rake:179:in > `block (2 levels) in <top (required)>' > /home/user/.rvm/gems/ruby-1.9.3-p327/bin/ruby_noexec_wrapper:14:in `eval' > /home/user/.rvm/gems/ruby-1.9.3-p327/bin/ruby_noexec_wrapper:14:in `<main>' > Tasks: TOP => db:migrate > (See full trace by running task with --trace) > > > > > > > > On Wednesday, December 26, 2012 8:27:27 AM UTC-5, Frederick Cheung wrote: > > > On Dec 26, 2:25 am, Julien Estebane <julienesteb...@gmail.com> wrote: > > > Hello, > > > > I am having what I might think is a basic problem...I can't get the > > > relationships of has_many and belongs_to mapped out correctly in the > > > database. I would expect, according to my MODEL and MIGRATION, that > > there > > > would be a desktop_id in the states and environments DATABASE table ? > > > > How can I get the desktop_id, state_id and environment_id columns mapped > > > out in the tables ? > > > There need to be statements in your migrations to add those columns - > > rails won't look at the models and work it out from the associations > > in there. > > > You may be confusing things with datamapper (that does do this I > > think) or with the fact that if you do rails g model foo > > belongs_to:bar then rails will add the belongs_to to the model and the > > migration. > > > Fred. > > > > I ran rake db:migrate before going to the rails console and checking the > > > tables... > > > > MODEL: > > > ------ > > > > user@user-DevMachine:~/dev/myapp/app/models$ cat engine.rb > > > class Engine < ActiveRecord::Base > > > # attr_accessible :title, :body > > > belongs_to :environment > > > belongs_to :state > > > end > > > user@user-DevMachine:~/dev/myapp/app/models$ cat environment.rb > > > class Environment < ActiveRecord::Base > > > attr_accessible :description > > > has_many :engines > > > end > > > user@user-DevMachine:~/dev/myapp/app/models$ cat state.rb > > > class State < ActiveRecord::Base > > > attr_accessible :description > > > has_many :engines > > > end > > > > MIGRATION: > > > ---------- > > > > user@user-DevMachine:~/dev/myapp/db/migrate$ cat > > > 20121225230016_create_engines.rb > > > class CreateEngines < ActiveRecord::Migration > > > def change > > > create_table :engines do |t| > > > > t.timestamps > > > end > > > end > > > end > > > user@user-DevMachine:~/dev/myapp/db/migrate$ cat > > > 20121225230034_create_states.rb > > > class CreateStates < ActiveRecord::Migration > > > def change > > > create_table :states do |t| > > > t.string :description > > > > t.timestamps > > > end > > > end > > > end > > > user@user-DevMachine:~/dev/myapp/db/migrate$ cat > > > 20121225230118_create_environments.rb > > > class CreateEnvironments < ActiveRecord::Migration > > ... > > read more » -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.