gpt4 book ai didi

ruby-on-rails - 对 'respond_to' 与 'respond_to?' 感到困惑

转载 作者:行者123 更新时间:2023-12-03 05:19:06 25 4
gpt4 key购买 nike

我正在通过railstutorial.org学习Rails,但我对一些事情感到困惑:在 this chapter作者告诉我们在控制台中使用 User 对象的 respond_to? 方法进行一些测试,并且效果正常。但后来,当我们为 :encrypted_pa​​ssword 属性编写测试时,他使用了 respond_to

出于好奇,我在控制台中针对 User 对象尝试了 respond_to,但收到一条错误消息,指出该方法不存在。唉,如果我尝试使用 respond_to? 而不是 respond_to 编写测试,则测试不会运行。

有人可以向我解释一下其中的区别吗?为什么测试只能使用 respond_to 运行?

最佳答案

Ruby 将 ?! 视为方法名称中的实际字符。 respond_torespond_to? 是不同的。 ? 表示此应该响应 true 或 false(按照惯例;这不是必需的)。具体来说:

respond_to?Ruby method用于检测该类是否具有特定方法。例如,

@user.respond_to?('eat_food')

如果 User 类具有 eat_food 方法,则返回 true。

respond_toRails method用于响应特定的请求类型。例如:

def index
@people = Person.find(:all)

respond_to do |format|
format.html
format.xml { render :xml => @people.to_xml }
end
end

但是,在您提供的 RailsTutorial 链接中,您会看到一个 RSpec 方法应该与 RSpec 的 respond_to 进行交互。方法。除非您运行 rails console test,否则这在您的控制台中不可用。

关于ruby-on-rails - 对 'respond_to' 与 'respond_to?' 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6849722/

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