我这里有一行代码,用于检查name
对象中是否存在user.identity
列。如果user
对象具有identity
,则不会失败。但是当user
对象没有identity
值时,它会失败。
text += "Print me: \n" if @user.identity.name.present? && !@user.identity.phone.active?
我想首先检查identity
是否存在。我怎么能以一个整洁的方式做到这一点?有没有方法来检查嵌套对象链?
我尽量避免ifs
的长期条件。
答案 0 :(得分:1)
是的,您可以使用<activity
android:name=".<YourActivity>"
android:theme="@style/NoAB" >
(如果您使用一次,则必须在此之后一直使用它)
try
答案 1 :(得分:0)
您可以在调用try
时使用name
,如下所示:
text += "Print me: \n" if @user.identity.try(:name).present? && !@user.identity.try(:phone).active?
注意:由于try
检查了许多其他内容,try
在性能方面不是首选,只是为了避免检查上一个方法是否可以调用下一个方法。你可能想尝试这个(更可读和更优先):
id = @user.identity
text += "Print me: \n" if id && id.name.present? && !id.phone.active?
答案 2 :(得分:0)
您可以通过以下方式使用它:
text += "Print me: \n" if @user.try(:identity).try(:name) && !@user.try(:identity).try(:phone).try(:active?)