0

Я все еще изучаю Ruby (так что я полный noob), сейчас у меня есть приложение, успешно работающее локально, но при попытке открыть приложения на Heroku, в котором я первый выполнить heroku run rake db:migrate я наткнулся на проблему .. он говорит мне:attr_accessible error on rails 4.1.8 при выполнении rake db: migrate on heroku

Running `rake db:migrate` attached to terminal... up, run.2149 
-- attr_accessible(:pName, :pQuantity, :pMeter, :pWeight, :pSellPrice, :pCategory, :pPic) 
-- attr_accessible(:pName, :pQuantity, :pMeter, :pWeight, :pSellPrice, :pCategory, :pPic) 
rake aborted! 
NoMethodError: undefined method `attr_accessible' for #<ActiveRecord::Migration:0x007f2dc2ba45b8> 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:648:in `block in method_missing' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:621:in `block in say_with_time' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:621:in `say_with_time' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:641:in `method_missing' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:406:in `method_missing' 
/app/db/migrate/20150802134246_create_inventories.rb:2:in `<class:CreateInventories>' 
/app/db/migrate/20150802134246_create_inventories.rb:1:in `<top (required)>' 
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require' 
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `block in require' 
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency' 
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:761:in `load_migration' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:757:in `migration' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:752:in `disable_ddl_transaction' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:1044:in `use_transaction?' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:954:in `rescue in block in migrate' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:951:in `block in migrate' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:948:in `each' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:948:in `migrate' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:807:in `up' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/migration.rb:785:in `migrate' 
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/railties/databases.rake:34:in `block (2 levels) in <top (required)>' 
Tasks: TOP => db:migrate 

Я пытался выяснить причину, после того, как интересно вокруг, я узнал об изменении рельсов 4.0.0 в том, что attr_accessible больше не используются, и вместо этого мы должны использовать сильные параметры. Поэтому удаление attr_accessible из модели решит проблему ...

Тем не менее, у меня есть пустая модель, нет никакого attr_accessible везде, где я смотрю. (рядом с этим странно, почему мои приложения работают локально, но не на геройку?) Я не могу понять, почему эта ошибка появляется и где искать решения. Я пытаюсь посмотреть файл active_record, но я боюсь сделать какие-либо изменения, любая идея?

также, может ли кто-нибудь сказать мне какие-либо ресурсы, которые могут помочь мне прочитать этот тип ошибок журнала? Я пытался читать некоторые статьи, но не может найти тот, который легко понять недоносков, как я ...; (

+2

Похоже, вы использовали 'attr_accessible' в своем файле миграции. Откройте '/ app/db/migrate/20150802134246_create_inventories.rb' и посмотрите, что у вас там есть. –

+0

Возможно, вы случайно добавили его/модифицировали «старый» файл миграции. Вы никогда не видели воздействия локально, потому что db: migrate будет запускать только «новые» миграции локально, но если миграции не выполняются на heroku, вы попадаете в ошибку – mtamhankar

+0

@XMLSlayer Whoa! Спасибо чувак! Оно работает! Я этого раньше не замечал !! Вы на день безопаснее! – Hans

ответ

0

рад, что я мог бы помочь :)

Что касается ошибок в журнале чтение идет, вот что я делаю. Вы получите кучу строк о файлах, которые вы никогда не касались. Это потому, что, хотя, скорее всего, есть ошибка в чем-то , которую вы писали, ошибка распространяется по всей структуре Rails. Вот почему Rails действительно круто: для вас это очень много, поэтому вам не о чем беспокоиться.

Если ошибка указана в коде, который вы написали, этот файл также должен быть указан в трассировке стека. Итак, в этом примере у вас есть пучок /app/vendor/bundle/... (который я предположил, что вы не касались), но тогда есть /app/db/migrate/... (что, скорее всего, вы создали).

Это заставляет меня думать, что ошибка находится в этом файле. Кроме того, он даже дает вам номер строки (это то, что :2 находится в create_inventories.rb:2). Конечно, эти номера строк не всегда правильные, но они должны помочь вам начать работу в нужном месте!

 Смежные вопросы

  • Нет связанных вопросов^_^