处理嵌套关系rails 2.3.x中的nil(null)值

sam*_*207 2 ruby null exception-handling ruby-on-rails

目前我工作的项目在视图中遵循了类似的代码

<%= product.provider.name %>
Run Code Online (Sandbox Code Playgroud)

以上代码获取产品的"提供者"并显示他/她的名字.但是我的问题是,当'provider'获得nil时,这个代码有时会失败.(我知道它有点不常见但是因为我正在使用遗留数据库这种情况发生了)

所以为了检查nil验证,我编写了以下代码(在我的ApplicationHelper中)

def t(obj, attr)
    obj.nil? ? "" : obj.send(attr.to_sym)
end
Run Code Online (Sandbox Code Playgroud)

现在我做的是这样的

<%= t(product.provider, "name") %>
Run Code Online (Sandbox Code Playgroud)

即使这有效,我还遇到了另一个问题,我找到了这个代码

<%= product.provider.provider_type.title %>
Run Code Online (Sandbox Code Playgroud)

这里的问题是,在上面的代码中,'provider'或'provider_type'可以是nil.

我正在看的是处理任意数量的嵌套关系的异常处理机制.

我想你们都知道我要做的事情......

或者这是 在嵌套关系中处理nil值的完全错误的路径

你的想法将非常感激(我在轨道上运行2.3.8)

提前致谢

干杯

sameera

Cas*_*per 5

这是一个常见问题.您可能想要检查以下内容:

例子:

# With try
product.provider.try(:name)
product.provider.try(:provider_type).try(:title)

# With andand
product.provider.andand.name
Run Code Online (Sandbox Code Playgroud)