检查嵌套关联是否具有对象

时间:2015-05-22 06:18:58

标签: ruby-on-rails ruby

我这里有一行代码,用于检查name对象中是否存在user.identity列。如果user对象具有identity,则不会失败。但是当user对象没有identity值时,它会失败。

text += "Print me: \n" if @user.identity.name.present? && !@user.identity.phone.active?

我想首先检查identity是否存在。我怎么能以一个整洁的方式做到这一点?有没有方法来检查嵌套对象链?

我尽量避免ifs的长期条件。

3 个答案:

答案 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?)