我正在尝试重置我的数据库。
它不在本地或在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
答案 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:drop
,rake db:create
),则可以改为运行:
rake db:migrate