Rails Heroku - 重置数据库

时间:2015-10-27 01:42:30

标签: ruby-on-rails heroku migration database-migration

我正在尝试重置我的数据库。

它不在本地或在heroku中工作。

我巧妙地运行了这些命令:

1. rake db:drop
2. rake db:create
3. rake db:migrate

迁移需要一段时间才能成功。我评论了那些导致问题并且整个工作完成迁移的问题。

然后我尝试使用以下命令重置数据库:

4. rake db:reset

我收到此错误:

initialize_schema_migrations_table()
   -> 0.0031s
rake aborted!
NoMethodError: undefined method `name=' for #<University:0x007fc288bdcca0>
/app/vendor/bundle/ruby/2.2.0/gems/activemodel-4.1.9/lib/active_model/attribute_methods.rb:435:in `method_missing'

我在代码库中找不到任何一个名为'name'的大学方法。我已经开始搜索大学附近的university.name和名字。

我更新了我的宝石并运行了bundle install。

此错误消息的含义是什么?

当我尝试:

rake db:reset --trace

我得到:     **执行db:abort_if_pending_migrations     耙子流产了!     NoMethodError:未定义的方法name=' for #<University:0x007f9a1b24da30> /Users/em/.rvm/gems/ruby-2.2.2/gems/activemodel-4.1.9/lib/active_model/attribute_methods.rb:435:in method_missing'

我已经运行了所有迁移并刷新了rake db:migrate

2 个答案:

答案 0 :(得分:0)

当您尝试写入尚未声明为attr_writer的变量时,会出现错误。

class Foo      
  attr_reader :bar

  def initialize
    @bar = 1
  end
end

> f = foo.new
 => #<Foo:0xa22ef0c @bar=1>
> f.bar
 => 1
> f.bar = 2
NoMethodError: undefined method `bar=' for #<Foo:0xa22ef0c @bar=1>
    from (irb):23
    from /usr/local/rvm/rubies/ruby-2.1.3/bin/irb:11:in `<main>'

答案 1 :(得分:0)

您的Receiver<Long> MyReceiver(){ return new Receiver<Long>() { @Override public void onSuccess(Long response) { //handle success } @Override public void onFailure(ServerFailure error){ //handle failure } } 文件中有一些内容导致错误。

您在运行seeds.rb时遇到问题的原因,而不是在运行这3个单独步骤时看到的问题是因为rake db:reset没有执行这3个单独的步骤。

rake db:reset将运行以下内容:

rake db:reset

随后,rake db:drop rake db:setup 将运行以下内容:

rake db:setup

如果想要执行前3个步骤(rake db:create rake db:schema:load rake db:seed rake db:droprake db:create),则可以改为运行:

rake db:migrate