嘿,有一个快速的Ruby(或Rails)表达式,如果一个对象没有值,则返回nil吗?
例如,如果self.name在数据库中为null,则应返回nil。如果它是一个字符串,它应该返回它。我想的除非,但也许有更好的东西。
另外,如果你有一个像get_profession(type)这样的函数,并且type可以是“first”,“second”或“third”,那么查询self.first或self.second或self的优雅方式是什么。第三个(根据类型参数)并返回nil,除非self.first(或其他类型)有一个字符串值?
如你所见,第二个问题与第一个问题密切相关。
答案 0 :(得分:2)
在Ruby中,如果变量没有值,则默认为nil
。要回答第二个问题,您可以使用send
方法调用“类型”方法。像,
def get_profession(type)
# Making sure correct type is passed.
raise RuntimeError unless ['first', 'second', 'third'].include?(type.to_s)
send(type)
end
发送期望字符串中的方法作为参数,它在同一个对象上调用。在您的情况下,如果“类型”方法的响应没有值,则默认情况下为nil
。
答案 1 :(得分:1)
如果没有值,它实际返回nil。你真的试过了吗?如果一个对象没有任何值,它应该返回nil
需要添加,但是你的属性应该在数据库中有相应的列名。否则它将是一个未定义的方法调用。
e.g。
Company.name< - 如果公司表中有名称列但没有值
,则应返回nil如果您没有名称列,则会说未定义的方法名称。
如果您打算如此显示字段,那么检查字段是常见且更简洁的:
<%= @person.profession if @person.profession %>
或其他方式
<%= @person.profession unless @person.profession.nil? %>