Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4.2+;PG-无法初始化ActiveRecord对象_Ruby On Rails_Ruby_Postgresql_Activerecord_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails 4.2+;PG-无法初始化ActiveRecord对象

Ruby on rails Rails 4.2+;PG-无法初始化ActiveRecord对象,ruby-on-rails,ruby,postgresql,activerecord,ruby-on-rails-4,Ruby On Rails,Ruby,Postgresql,Activerecord,Ruby On Rails 4,我有一个简单的AR模型: class Purchaser < ActiveRecord::Base attr_accessor :name has_many :purchases def initialize(opts={}) @name = opts[:name] end end 以下是错误: activerecord-4.2.0.beta1/lib/active_record/transactions.rb:373:in `clear_transaction

我有一个简单的AR模型:

class Purchaser < ActiveRecord::Base
  attr_accessor :name
  has_many :purchases

  def initialize(opts={})
    @name = opts[:name]
  end
end
以下是错误:

activerecord-4.2.0.beta1/lib/active_record/transactions.rb:373:in `clear_transaction_record_state': undefined method `[]' for nil:NilClass (NoMethodError)
from activerecord-4.2.0.beta1/lib/active_record/transactions.rb:304:in `ensure in rollback_active_record_state!'
from activerecord-4.2.0.beta1/lib/active_record/transactions.rb:304:in `rollback_active_record_state!'
from activerecord-4.2.0.beta1/lib/active_record/transactions.rb:283:in `save'
from activerecord-4.2.0.beta1/lib/active_record/persistence.rb:34:in `create'
from activerecord-4.2.0.beta1/lib/active_record/relation.rb:141:in `block in create'
from activerecord-4.2.0.beta1/lib/active_record/relation.rb:300:in `scoping'
from activerecord-4.2.0.beta1/lib/active_record/relation.rb:141:in `create'
from activerecord-4.2.0.beta1/lib/active_record/relation.rb:211:in `find_or_create_by'
from activerecord-4.2.0.beta1/lib/active_record/querying.rb:6:in `find_or_create_by'

我做错了什么?Ruby 2.1.2,PostgreSQL。

您正在重写ActiveRecord中的
initialize
方法。您应该调用
super
来执行ActiveRecord(父)构造函数。您可以在执行代码后执行。比如:

def initialize(opts={})
   @name = opts[:name]
   super
end
希望这有帮助

def initialize(opts={})
   @name = opts[:name]
   super
end