我在Rails中工作,并且有以下课程:
class Player < ActiveRecord::Base
attr_accessor :name, :rating, :team_name
def initialize(name, rating, team_name)
@name = name
@rating = rating
@team_name = team_name
end
end
当我跑步时
bundle exec rails console
并尝试:
a = Player.new("me", 5.0, "UCLA")
我回来了:
=> #<Player not initialized>
我不知道为什么Player对象不会在这里初始化。关于该怎么做的任何建议/可能导致此问题的解释?
谢谢,Mariogs
不知道为什么不会在这里初始化Player对象
它不是完全因为您尚未初始化而初始化的!
您已经重写了ActiveRecord :: Base初始化方法,但是您没有对其进行调用,因此Player类没有正确初始化。
超级叫
class Player < ActiveRecord::Base
attr_accessor :name, :rating, :team_name
def initialize(name, rating, team_name)
super
@name = name
@rating = rating
@team_name = team_name
end
end
您可能根本不打算覆盖initialize方法,强烈建议不要使用http://blog.dalethatcher.com/2008/03/rails-dont-override-initialize-on.html,您可能想利用after_initialize回调,因此您可以从传入的params哈希中拆分名称,等级和team_rating到任何导致玩家模型首先初始化的方法中
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句