将哈希数组作为API接收
@request['clients'].each do |client|
每个client
属性上正在执行验证。但是,Rails逻辑无法针对错误的语句启动,并且忽略了它们。验证示例:
def client_type_ok
if @this_client['type'] == "ADT" || @this_client['type'] == "CHD"
true
else
false
@error_code_39 = true
end
end
控制器动作只希望在满足真实条件时执行:
if client_type_ok && client_type_ok
然而,尽管false
,Rails.logger明确确认此条件正在通过。
Rails.logger.info !@this_client['type'].blank?
Rails.logger.info @this_client['type']
Rails.logger.info "not"
Rails.logger.info @this_client['type'] != "ADT"
Rails.logger.info "ADT"
Rails.logger.info @this_client['type'] == "ADT"
正在返回
true
APT
not
true
ADT
` `
底部被生成为空白。用p
替换Rails.logger也会发生同样的情况。此操作的所有逻辑都忽略了错误的结果。尽管我可以尝试设计出完全真实的案例,但这是不方便且违反直觉的。
因此,似乎有一个meta函数妨碍了对错误案例的处理。如何追踪?可以逐步跟踪Rails.logger逻辑吗?
答案 0 :(得分:3)
您不会在此处返回假
def client_type_ok
if @this_client['type'] == "ADT" || @this_client['type'] == "CHD"
true
else
false # this is not doing anything. Simply ignored.
@error_code_39 = true # result of this assignment will be true.
# and it also is the last expression of the if
# so it becomes the implicit return value of the method
end
end
答案 1 :(得分:1)
function mh_check_loggedin_redirect()
{
if( is_page( 'cabinet' ) && ! is_user_logged_in() )
{
wp_redirect( home_url() );
die;
}
}
add_action( 'template_redirect', 'mh_check_loggedin_redirect' );
正如塞尔吉奥在上述答案中所提到的,对于else条件,yur方法的返回值将是正确的。您需要交换位置,或者可以重写上述方法
def client_type_ok
if @this_client['type'] == "ADT" || @this_client['type'] == "CHD"
true
else
false
@error_code_39 = true
end
end