2015-09-26 5 views
0

Вопрос в значительной степени в названии. Какой лучший способ реорганизовать что-то вроде ниже?Rails: Рефакторинг - json ["data"] ["counts"] ["follow_by"], если json && json ["data"] && json ["data"] ["counts"] && json ["data"] [ "counts"] ["follow_by"]

json["data"]["counts"]["followed_by"] if json && json["data"] && json["data"]["counts"] && json["data"]["counts"]["followed_by"] 

Я хочу вернуться nil если json["data"]["counts"]["followed_by"] не существует.

ответ

1

Вы можете использовать try:

json.try(:[], 'data').try(:[], 'counts').try(:[], 'followed_by') 
1

Я склонен к andand gem на длинные try цепи, например,

json.andand['data'].andand['counts'].andand['followed_by'] 

IMO это только выглядит лучше.

+0

1 пункт для andand gem. Это определенно выглядит лучше, чем использование длинной цепочки 'try'. –