Rails / Active Record-如何使用'采取'如果有任何匹配的记录

时间:2016-11-04 21:36:32

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个查询:

ModalType.where(id: modal['modal_id']).take.template

问题是我可能会在查询找不到任何id:modal [' modal_id']的情况下运行,然后我收到错误

undefined method `template' for nil:NilClass

我怎样才能写出会采取的措施?但是只有在where(id:modal_id)返回某些东西(=找到了)的时候?

1 个答案:

答案 0 :(得分:3)

使用Ruby< 2.3:

object = ModalType.where(id: modal['modal_id']).take
if object
  object.template
else
  # I don't know. it's up to you
end

ModalType.where(id: modal['modal_id']).take.try(:template)

使用Ruby> = 2.3,您可以使用安全导航操作符:

template = ModalType.where(id: modal['modal_id']).take&.template