Я все еще изучаю 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, но я боюсь сделать какие-либо изменения, любая идея?
также, может ли кто-нибудь сказать мне какие-либо ресурсы, которые могут помочь мне прочитать этот тип ошибок журнала? Я пытался читать некоторые статьи, но не может найти тот, который легко понять недоносков, как я ...; (
Похоже, вы использовали 'attr_accessible' в своем файле миграции. Откройте '/ app/db/migrate/20150802134246_create_inventories.rb' и посмотрите, что у вас там есть. –
Возможно, вы случайно добавили его/модифицировали «старый» файл миграции. Вы никогда не видели воздействия локально, потому что db: migrate будет запускать только «новые» миграции локально, но если миграции не выполняются на heroku, вы попадаете в ошибку – mtamhankar
@XMLSlayer Whoa! Спасибо чувак! Оно работает! Я этого раньше не замечал !! Вы на день безопаснее! – Hans