gpt4 book ai didi

ruby-on-rails - 未在 Ruby 中初始化的对象

转载 作者:数据小太阳 更新时间:2023-10-29 07:13:35 25 4
gpt4 key购买 nike

我在 Rails 工作并有以下类(class):

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 对象不会在这里初始化。关于可能导致此问题的操作/解释的任何建议?

谢谢,马里奥格

最佳答案

have no idea why the Player object wouldn't be initialized here

它没有初始化很简单,因为你还没有初始化它!

您已经覆盖了 ActiveRecord::Base 初始化方法,但您没有调用它,所以 Player 类没有正确初始化

只要调用super

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

您可能根本不想重写初始化方法,强烈建议不要这样做 http://blog.dalethatcher.com/2008/03/rails-dont-override-initialize-on.html ,您可能打算使用 after_initialize 回调,这样您就可以将名称、评级和 team_rating 从传入的任何方法的参数哈希中分离出来,从而导致玩家模型首先被初始化

关于ruby-on-rails - 未在 Ruby 中初始化的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22726551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com