我正在使用railstutorial.org学习Rails,我对某些事情感到困惑:在this chapter中,作者告诉我们在控制台中使用 respond_to?
方法在User对象上进行一些测试,并且它可以正常工作 . 但是后来,当我们为 :encrypted_password
属性编写测试时,他使用 respond_to
.
出于好奇,我在控制台中尝试了 respond_to
,对于User对象,我得到一个错误,说该方法不存在 . 唉,如果我尝试使用 respond_to?
而不是 respond_to
编写测试,则测试不会运行 .
有人可以解释我的区别,为什么测试只运行 respond_to
?
3 回答
该测试使用方便的帮助程序,以提高用户友好性 .
Ruby是Ruby所以如果用这种方式调用它就可以使用好的旧
respond_to?
:在控制器中使用了另一个
respond_to
但仍然与您已经遇到的那些无关 .respond_to?
是布尔评估 .respond_to
(通常)用于确定显示信息 . More information here .respond_to?
检查方法是否存在,如果存在则返回true,如果不存在则返回false .Ruby将
?
和!
视为方法名称中的实际字符 .respond_to
和respond_to?
是不同的 .?
表示这应该以true或false响应(按惯例;这不是必需的) . 特别:respond_to?
是Ruby method,用于检测类是否具有特定方法 . 例如,如果
User
类上有eat_food
方法,则返回true .respond_to
是Rails method,用于响应特定的请求类型 . 例如:但是,在RailsTutorial链接中,'ve provided, you'看到 RSpec 方法
should
与RSpec的respond_to方法交互 . 除非您运行rails console test
,否则这将无法在您的控制台中使用 .