这个问题是关于在 rails 3 中使用 .try() 方法(以及一些关于测试 nil 的最佳实践)
如果我有一个可能为 nil 也可能不是 nil 的 db 对象,并且它有一个字段,例如分隔字符串,用逗号和可选的分号分隔,并且我想查看该字符串是否包含特定的子字符串,那么我可能会这样做:
user_page = UserPage.find(id)
if user_page != nil
result = user_page.pagelist.gsub('\;', ',').split(",").include?(sub)
end
因此,例如 user_page.pagelist == "item_a,item_b;item_c"
我想用 .try 重写它,但找不到在 pagelist 之后应用这些东西的方法
所以我尝试传递一个块(来自这个链接http://apidock.com/rails/Object/try)
user_page.try(:pagelist) {|t| t.gsub('\;', ',').split(",").include?(sub)}
但是,该块被简单地忽略,返回的结果只是 pagelist
我尝试过尝试应用 gsub 等部分的其他组合,但无济于事
如何将其他方法应用于“尝试”的方法?
(我什至不知道如何以可理解的方式表达这个问题!)