Cześć, próbuję wykonać taką migrację:
[code] create_table :city_districts do |t|
t.string :name
t.integer :city_id
t.timestamps
end
add_index :city_districts, [:name, :city_id], :unique => true
add_column :businesses, :city_district_id, :integer
CityDistrict.reset_column_information
Business.reset_column_information
Business.find_each do |business|
# some code
end[/code]
i dostaję tego typu błąd:
StandardError: An error has occurred, all later migrations canceled: undefined method `each' for nil:NilClass
w linijce:
Business.find_each
To samo jest kiedy zamienię tą linijkę na:
Business.all.each
Problem polega na tym, że migracja przechodzi na niektórych maszynach, a na niektórych nie. Nie mam już pomysłu co może być nie tak. Myślałem nad tym, czy przypadkiem:
Business.reset_column_information
nie powoduje jakiegoś błędu.
Załączę też końcówkę backtrace’u:
[GEM_ROOT]/gems/mysql2-0.2.13/lib/active_record/connection_adapters/mysql2_adapter.rb:586:in `select'
[GEM_ROOT]/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `select_all'
[GEM_ROOT]/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract/query_cache.rb:56:in `select_all'
[GEM_ROOT]/gems/activerecord-3.0.10/lib/active_record/base.rb:473:in `find_by_sql'
[GEM_ROOT]/gems/newrelic_rpm-3.1.1/lib/new_relic/agent/method_tracer.rb:491:in `block in find_by_sql_with_trace_ActiveRecord_self_name_find_by_sql'
[GEM_ROOT]/gems/newrelic_rpm-3.1.1/lib/new_relic/agent/method_tracer.rb:242:in `trace_execution_scoped'
[GEM_ROOT]/gems/newrelic_rpm-3.1.1/lib/new_relic/agent/method_tracer.rb:486:in `find_by_sql_with_trace_ActiveRecord_self_name_find_by_sql'
[GEM_ROOT]/gems/activerecord-3.0.10/lib/active_record/relation.rb:64:in `to_a'
[GEM_ROOT]/gems/activerecord-3.0.10/lib/active_record/relation/finder_methods.rb:143:in `all'
[GEM_ROOT]/gems/activerecord-3.0.10/lib/active_record/base.rb:444:in `all'
db/migrate/20111104085756_create_city_districts.rb:16:in `up'
Jeżeli macie jakieś pomysły, spotkaliście się z podobnym problemem to podrzućcie jakąś radę.