rake aborted, wrong number of arguments - ruby-on-rails

I'm trying to add a counter_cache to my tag table
when I run my migration to add the column it aborts (but not before adding the column)
I don't understand it, and although it makes the column, it's going stop any future migrations. How do i fix this?
== AddCountToTags: migrating =================================================
-- add_column(:tags, :reports_count, :integer, {:default=>0})
-> 0.1405s
rake aborted!
An error has occurred, all later migrations canceled:
wrong number of arguments (0 for 1)
The trace:
/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/counter_cache.rb:17:in `reset_counters'
/Dropbox/Shared/repair/db/migrate/20120120234938_add_count_to_tags.rb:5:in `up'
/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/migration.rb:314:in `block in migrate'
/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/benchmark.rb:295:in `measure'
/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/migration.rb:314:in `migrate'
/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/migration.rb:397:in `migrate'
/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/migration.rb:539:in `block (2 levels) in migrate'
/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/migration.rb:615:in `call'
/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/migration.rb:615:in `ddl_transaction'
/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/migration.rb:538:in `block in migrate'
/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/migration.rb:525:in `each'
/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/migration.rb:525:in `migrate'
/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/migration.rb:435:in `up'
/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/migration.rb:417:in `migrate'
/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/railties/databases.rake:151:in `block (2 levels) in <top (required)>'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/.rvm/gems/ruby-1.9.2-p290/bin/rake:19:in `load'
/.rvm/gems/ruby-1.9.2-p290/bin/rake:19:in `<main>'
migration file:
class AddCountToTags < ActiveRecord::Migration
def self.up
add_column :tags, :reports_count, :integer, :default => 0
Tag.reset_counters
Tag.find(:all).each do |t|
t.update_attribute(:reports_count, t.reports.length)
end
end
def self.down
remove_column :tags, :reports_count
end
end
relevant models:
class TagAssignment < ActiveRecord::Base
belongs_to :tag, :counter_cache => :reports_count
belongs_to :report
end
class Tag < ActiveRecord::Base
has_many :tag_assignments, :dependent => :destroy
has_many :reports, :through => :tag_assignments
end

From what I see here you need to pass an id to reset_counters.
it seems that what you want to do should be (untested) done by:
Tag.find_each do |t|
Tag.reset_counters(t.id, :reports)
end

Related

PG::UndefinedTable: ERROR: relation "user_profiles" does not exist when trying to run : heroku run rake db:migrate

I have created a web app in rails and I was using sqlite3. Now I am trying to deploy it with heroku which uses pg but I am running into this error:
PG::UndefinedTable: ERROR: relation "user_profiles" does not exist
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:92:in `exec'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:92:in `block (2 levels) in execute'
/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.2.2/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.2.2/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.2.2/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:91:in `block in execute'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/abstract_adapter.rb:718:in `block (2 levels) in log'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/abstract_adapter.rb:717:in `block in log'
/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.2.2/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/abstract_adapter.rb:708:in `log'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:90:in `execute'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/postgresql/schema_statements.rb:443:in `add_index'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:890:in `block in method_missing'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:858:in `block in say_with_time'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:858:in `say_with_time'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:879:in `method_missing'
/app/db/migrate/20200327044108_create_user_profiles.rb:10:in `block in change'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/abstract/schema_statements.rb:309:in `create_table'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:890:in `block in method_missing'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:858:in `block in say_with_time'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:858:in `say_with_time'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:879:in `method_missing'
/app/db/migrate/20200327044108_create_user_profiles.rb:3:in `change'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:828:in `exec_migration'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:812:in `block (2 levels) in migrate'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:811:in `block in migrate'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:473:in `with_connection'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:810:in `migrate'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:1001:in `migrate'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:1311:in `block in execute_migration_in_transaction'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:1362:in `block in ddl_transaction'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/abstract/database_statements.rb:281:in `block in transaction'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/abstract/database_statements.rb:281:in `transaction'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/transactions.rb:212:in `transaction'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:1362:in `ddl_transaction'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:1310:in `execute_migration_in_transaction'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:1282:in `block in migrate_without_lock'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:1281:in `each'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:1281:in `migrate_without_lock'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:1229:in `block in migrate'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:1382:in `with_advisory_lock'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:1229:in `migrate'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:1061:in `up'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/migration.rb:1036:in `migrate'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/tasks/database_tasks.rb:238:in `migrate'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/railties/databases.rake:86:in `block (3 levels) in <main>'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/railties/databases.rake:84:in `each'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/railties/databases.rake:84:in `block (2 levels) in <main>'
/app/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
/app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/lib/bundler/cli/exec.rb:74:in `load'
/app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/lib/bundler/cli/exec.rb:74:in `kernel_load'
/app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/lib/bundler/cli/exec.rb:28:in `run'
/app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/lib/bundler/cli.rb:463:in `exec'
/app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/lib/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
/app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/lib/bundler/cli.rb:27:in `dispatch'
/app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/lib/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
/app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/lib/bundler/cli.rb:18:in `start'
/app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/exe/bundle:30:in `block in <top (required)>'
/app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/lib/bundler/friendly_errors.rb:124:in `with_friendly_errors'
/app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/exe/bundle:22:in `<top (required)>'
/app/bin/bundle:104:in `load'
/app/bin/bundle:104:in `<main>'
I've looked around a bit but still cant get it to work. I can see that it has to do with my user_profiles.
My user profiles model:
class UserProfile < ApplicationRecord
belongs_to :user, class_name: 'User', foreign_key: 'user_id'
validates_uniqueness_of :user_id
end
This is my user profile migrate:
class CreateUserProfiles < ActiveRecord::Migration[6.0]
def change
create_table :user_profiles do |t|
t.integer :user_id
t.string :name
t.integer :age
t.string :address
t.string :ptName
t.string :bio
t.timestamps
end
add_foreign_key :user_profiles, :users, column: :user_id
add_index :user_profiles, :user_id, unique: true
end
end
The error is occurring as when i go to view my app through heroku I see this: Application error. So I try and run: heroku run rake db:migrate and the error in the title occurs. I think it might have to do with Pg being more strict with foreign keys. Any suggestions?
From Rails 5 - when we reference a model, index on the foreign_key is automatically created.
Just do it like below -
class CreateUserProfiles < ActiveRecord::Migration[6.0]
def change
create_table :user_profiles do |t|
t.references :user, null: false, foreign_key: true
t.string :name
t.integer :age
t.string :address
t.string :ptName
t.string :bio
t.timestamps
end
end
end

Uninitialized constant after rake db migration

I wanted to add a table called measurement_error_categories using rake db:migrate.
I created a migration file with bundle exec rake db:create_migration NAME=create_measurement_error_category_table
Now I get following error after running bundle exec rake db:migrate
== 20170620084816 CreateMeasurementErrorCategoryTable: migrating ==============
rake aborted!
An error has occurred, this and all later migrations canceled:
uninitialized constant CreateMeasurementErrorCategoryTable::MeasurementErrorCategory
/Users/ndinatale/leanlogic-qa-prototype/server/db/migrate/20170620084816_create_measurement_error_category_table.rb:3:in `change'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/migration.rb:602:in `exec_migration'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/migration.rb:586:in `block (2 levels) in migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/migration.rb:585:in `block in migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/connection_adapters/abstract/connection_pool.rb:294:in `with_connection'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/migration.rb:584:in `migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/migration.rb:759:in `migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/migration.rb:998:in `block in execute_migration_in_transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/migration.rb:1044:in `block in ddl_transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/connection_adapters/abstract/database_statements.rb:201:in `block in transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/connection_adapters/abstract/database_statements.rb:209:in `within_new_transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/connection_adapters/abstract/database_statements.rb:201:in `transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/transactions.rb:208:in `transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/migration.rb:1044:in `ddl_transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/migration.rb:997:in `execute_migration_in_transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/migration.rb:959:in `block in migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/migration.rb:955:in `each'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/migration.rb:955:in `migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/migration.rb:814:in `up'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/migration.rb:792:in `migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.16/lib/active_record/railties/databases.rake:34:in `block (2 levels) in <top (required)>'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.14.3/lib/bundler/cli/exec.rb:74:in `load'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.14.3/lib/bundler/cli/exec.rb:74:in `kernel_load'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.14.3/lib/bundler/cli/exec.rb:27:in `run'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.14.3/lib/bundler/cli.rb:335:in `exec'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.14.3/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.14.3/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.14.3/lib/bundler/vendor/thor/lib/thor.rb:359:in `dispatch'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.14.3/lib/bundler/cli.rb:20:in `dispatch'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.14.3/lib/bundler/vendor/thor/lib/thor/base.rb:440:in `start'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.14.3/lib/bundler/cli.rb:11:in `start'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.14.3/exe/bundle:32:in `block in <top (required)>'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.14.3/lib/bundler/friendly_errors.rb:121:in `with_friendly_errors'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.14.3/exe/bundle:24:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
20170620084816_create_measurement_error_category_table.rb:
class CreateMeasurementErrorCategoryTable < ActiveRecord::Migration
def change
MeasurementErrorCategory.create_table(self, :measurementerrorcategories)
end
end
measurement_error_category.rb:
class MeasurementErrorCategory < ActiveRecord::Base
include ModelBase
include Ordering
# -----
# Table setup
# -----
before_validation { complete_languageblock(false, :name) }
validates :name, language: { complete: :all, minlength: 3 }
# serialize json object (value) as newline delimited string in the database
serialize :name
augment_class_usertag
def self.create_table(m,tn)
m.create_table tn do |t|
t.string :name
t.integer :seqnum
augment_table_usertag t
end
end
end
What have I done wrong?
Okay I found out. In 20170620084816_create_measurement_error_category_table.rb I changed
class CreateMeasurementErrorCategoryTable < ActiveRecord::Migration
def change
MeasurementErrorCategory.create_table(self, :measurementerrorcategories)
end
end
to
class CreateMeasurementErrorCategoryTable < ActiveRecord::Migration
def create
MeasurementErrorCategory.create_table(self, :measurementerrorcategories)
end
end
So I changed the method name from change to create.

SQLite3::SQLException: in migration

Migration:
class AddUserIdToPhotos < ActiveRecord::Migration
def self.up
add_column :photos, :user_id, :integer
execute 'update photos inner join albums on albums.id = photos.album_id set photos.user_id = albums.user_id'
end
def self.down
remove_column :photos, :user_id
end
end
rake db:migrate, display error:
-- add_column(:photos, :user_id, :integer) -> 0.0010s
-- execute("update photos inner join albums on albums.id = photos.album_id set photos.user_id = albums.user_id") rake aborted!
StandardError: An error has occurred, this and all later migrations
canceled:
SQLite3::SQLException: near "inner": syntax error: update photos inner
join albums on albums.id = photos.album_id set photos.user_id =
albums.user_id/home/borowskiy/projects/galaxy/bdsmgalaxy/db/migrate/20110731191428_add_user_id_to_photos.rb:4:in
`up'
with trace:
SQLite3::SQLException: near "inner": syntax error: update photos inner join albums on albums.id = photos.album_id set photos.user_id = albums.user_id/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `initialize'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `new'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `prepare'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:134:in `execute'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/connection_adapters/sqlite_adapter.rb:278:in `block in execute'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/connection_adapters/abstract_adapter.rb:280:in `block in log'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activesupport-3.2.22/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/connection_adapters/abstract_adapter.rb:275:in `log'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rack-mini-profiler-0.9.7/lib/patches/db/activerecord.rb:17:in `log_with_miniprofiler'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/connection_adapters/sqlite_adapter.rb:278:in `execute'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:466:in `block in method_missing'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:438:in `block in say_with_time'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/benchmark.rb:281:in `measure'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:438:in `say_with_time'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:458:in `method_missing'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:334:in `method_missing'
/home/borowskiy/projects/galaxy/bdsmgalaxy/db/migrate/20110731191428_add_user_id_to_photos.rb:4:in `up'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:370:in `up'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:410:in `block (2 levels) in migrate'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/benchmark.rb:281:in `measure'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:410:in `block in migrate'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/connection_adapters/abstract/connection_pool.rb:129:in `with_connection'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:389:in `migrate'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:528:in `migrate'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:720:in `block (2 levels) in migrate'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:775:in `call'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:775:in `block in ddl_transaction'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/transactions.rb:208:in `transaction'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:775:in `ddl_transaction'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:719:in `block in migrate'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:700:in `each'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:700:in `migrate'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:570:in `up'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/migration.rb:551:in `migrate'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-3.2.22/lib/active_record/railties/databases.rake:193:in `block (2 levels) in <top (required)>'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:240:in `call'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:240:in `block in execute'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:235:in `each'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:235:in `execute'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:165:in `invoke'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:150:in `invoke_task'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `block (2 levels) in top_level'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `each'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `block in top_level'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:115:in `run_with_threads'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:100:in `top_level'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:78:in `block in run'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:176:in `standard_exception_handling'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:75:in `run'
/home/borowskiy/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/bin/rake:33:in `<top (required)>'
/home/borowskiy/.rbenv/versions/2.0.0-p247/bin/rake:23:in `load'
/home/borowskiy/.rbenv/versions/2.0.0-p247/bin/rake:23:in `<main>'
Tasks: TOP => db:migrate
You SQL query is wrong. The correct sql update query should be like this
update photos set photos.user_id = albums.user_id from albums where albums.id = photos.album_id
Please change your migration file to this
class AddUserIdToPhotos < ActiveRecord::Migration
def self.up
add_column :photos, :user_id, :integer
execute "update photos set photos.user_id = albums.user_id from albums where albums.id = photos.album_id"
end
def self.down
remove_column :photos, :user_id
end
end
and run it again.

Rails DB Migration can't add a foreign key

I've got a problem trying to run a migration in my rails project.
I have a simple addition of two tables:
class ModifyCurrentTablesToNewDesign < ActiveRecord::Migration
def change
# Some other migrations...
# New Table Companies
create_table :companies do |t|
t.string :name
end
# New Table Teams
create_table :teams do |t|
t.string :name
t.belongs_to :companies, :index => true, :foreign_key => true
end
# Some oooother migrations...
end
end
And when a run it, I've got this:
-- create_table(:companies)
-> 0.0036s
-- create_table(:teams)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::UndefinedColumn: ERROR: column "company_id" referenced in foreign key constraint does not exist
: ALTER TABLE "teams" ADD CONSTRAINT "fk_rails_e080df8a94"
FOREIGN KEY ("company_id")
REFERENCES "companies" ("id")
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:155:in `async_exec'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:155:in `block in execute'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:473:in `block in log'
/Library/Ruby/Gems/2.0.0/gems/activesupport-4.2.3/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:467:in `log'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:154:in `execute'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/schema_statements.rb:762:in `add_foreign_key'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/schema_statements.rb:217:in `block in create_table'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/schema_statements.rb:216:in `each_pair'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/schema_statements.rb:216:in `create_table'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:661:in `block in method_missing'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:631:in `block in say_with_time'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:631:in `say_with_time'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:651:in `method_missing'
/Users/julian/Development/sikuani/plataforma-eventos/db/migrate/20160121164754_modify_current_tables_to_new_design.rb:35:in `change'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:605:in `exec_migration'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:589:in `block (2 levels) in migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:588:in `block in migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:292:in `with_connection'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:587:in `migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:764:in `migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:994:in `block in execute_migration_in_transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:1040:in `block in ddl_transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/transaction.rb:184:in `within_new_transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/transactions.rb:220:in `transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:1040:in `ddl_transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:993:in `execute_migration_in_transaction'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:955:in `block in migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:951:in `each'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:951:in `migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:819:in `up'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/migration.rb:797:in `migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/tasks/database_tasks.rb:137:in `migrate'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.3/lib/active_record/railties/databases.rake:44:in `block (2 levels) in <top (required)>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
Isn't supposed that when the table companies is created, by default a column id is created within? Can you see why could this be happening?
It seems you have a 1:M relationship between companies and teams.
You need to use the singular because a team belongs to a single company, not multiple companies.
t.belongs_to :company, :index => true, :foreign_key => true

Error when adding a column with several options

I have the following migration in the system I'm working on:
class CreateEstoqueGruposProdutos < ActiveRecord::Migration
def change
create_table :est_grupos_produtos do |t|
t.integer :grupos_produtos_nivel_id, :null => false, foreign_key: { references: :est_grupos_produtos_niveis, on_update: :cascade, on_delete: :restrict }, index: { with: [:id], unique: true, :name => 'unique_grupos_produtos_id_nivel' }
t.timestamps
end
end
end
It basically creates a table with an integer column that references (foreign_key) another table and add some options to the index.
Now, I need to do the same thing with a table that already exists. I need to add a column like this to a table with existing data.
I'm trying to do:
class ChangeCadastrosPerfilNiveis < ActiveRecord::Migration
def change
add_column :cad_perfil_niveis, :perfil_niveis_nivel_id, :integer, :null => false, :default => 1, foreign_key: { references: :cad_perfil_niveis_niveis, on_update: :cascade, on_delete: :restrict }, index: { with: [:id], unique: true, :name => 'unique_perfil_niveis_id_nivel' }
end
end
It's not working. The error output is:
-- add_column(:cad_perfil_niveis, :perfil_niveis_nivel_id, :integer, {:null=>false, :default=>1, :foreign_key=>{:references=>:cad_perfil_niveis_niveis, :on_update=>:cascade, :on_delete=>:restrict}, :index=>{:with=>[:id], :unique=>true, :name=>"unique_perfil_niveis_id_nivel"}})
rake aborted!
An error has occurred, this and all later migrations canceled:
wrong number of arguments (5 for 3)
Backtrace:
wrong number of arguments (5 for 3)
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/foreigner-1.1.6/lib/foreigner/connection_adapters/sql2003.rb:17:in `add_foreign_key'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/schema_plus-1.1.2/lib/schema_plus/active_record/column_options_handler.rb:24:in `schema_plus_handle_column_options'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/schema_plus-1.1.2/lib/schema_plus/active_record/foreign_keys.rb:125:in `add_column'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:450:in `block in method_missing'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:424:in `block in say_with_time'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/benchmark.rb:280:in `measure'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:424:in `say_with_time'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:444:in `method_missing'
/home/sinetic/www/next/cadastros/db/migrate/20150223112512_change_cadastros_perfil_niveis.rb:4:in `change'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:393:in `block (2 levels) in migrate'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/benchmark.rb:280:in `measure'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:393:in `block in migrate'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:118:in `with_connection'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:377:in `migrate'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:512:in `migrate'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:704:in `block (2 levels) in migrate'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:759:in `call'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:759:in `block in ddl_transaction'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/transactions.rb:208:in `transaction'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:759:in `ddl_transaction'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:703:in `block in migrate'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:684:in `each'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:684:in `migrate'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:554:in `up'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:535:in `migrate'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/railties/databases.rake:153:in `block (2 levels) in <top (required)>'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/task.rb:205:in `call'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/task.rb:200:in `each'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/task.rb:144:in `invoke'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:94:in `each'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:88:in `top_level'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:66:in `block in run'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:63:in `run'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547#global/gems/rake-0.9.2.2/bin/rake:32:in `<top (required)>'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/bin/rake:23:in `load'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/bin/rake:23:in `<main>'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/bin/ruby_executable_hooks:15:in `eval'
/home/sinetic/.rvm/gems/ruby-1.9.3-p547/bin/ruby_executable_hooks:15:in `<main>'
How do this options could be added to the table in question without dropping it and creating it again?
Try to use change_table method:
change_table(:cad_perfil_niveis) do |t|
t.integer :perfil_niveis_nivel_id, :null => false, :default => 1, foreign_key: { references: :cad_perfil_niveis_niveis, on_update: :cascade, on_delete: :restrict }, index: { with: [:id], unique: true, :name => 'unique_perfil_niveis_id_nivel' }
end

Resources