Phi*_*lip 6 attributes ruby-on-rails ruby-on-rails-4
我正在尝试检查nil的多个属性,我发现这篇文章简化了......但我没有得到我想要的结果.我有一个用户,如果需要,我想更新他们的个人资料.但是,该用户拥有我想要的所有数据.
@user.try(:age_id).nil?
#returns false
@user.try(:customer).nil?
#returns false
@user.try(:country).nil?
#returns false
@user.try(:age_id).try(:customer).try(:country).nil?
#returns true
Run Code Online (Sandbox Code Playgroud)
当所有其他尝试的单个实例都以false响应时,为什么它在此处响应为true?
你是链接的.try(),在以下后失败try(:age_id):
age_id该@user对象@user.nil?#=>返回nil@user.age_id != nil#=>返回一个Fixnumtry(:customer)在Fixnum上调用方法,这显然会失败#=>返回nil等等
IRB控制台的一个例子:
1.9.3p448 :049 > nil.try(:nothing).try(:whatever).try(:try_this_also).nil?
=> true
Run Code Online (Sandbox Code Playgroud)
如果要测试所有这些属性都不是nil,请使用以下命令:
if @user.present?
if @user.age_id.presence && @user.customer.presence && @user.country.presence
# they are all present (!= nil)
else
# there is at least one attribute missing
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4660 次 |
| 最近记录: |