Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails/活动记录-如何使用&x27;以';如果有任何匹配的记录_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails/活动记录-如何使用&x27;以';如果有任何匹配的记录

Ruby on rails Rails/活动记录-如何使用&x27;以';如果有任何匹配的记录,ruby-on-rails,ruby,ruby-on-rails-4,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 我怎样才能写一些“take”的东西,但前提是where(id:modal_id)返回一些东西(=找到了)?使用Ruby=2.3,您可以使用安全导航操作符: template = Mo

我有一个疑问:

ModalType.where(id: modal['modal_id']).take.template
问题是,如果查询没有找到任何id:modal['modal_id'],那么我可能会运行,然后得到错误

undefined method `template' for nil:NilClass
我怎样才能写一些“take”的东西,但前提是where(id:modal_id)返回一些东西(=找到了)?

使用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

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

template = ModalType.where(id: modal['modal_id']).take&.template
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

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

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

谢谢,我应该提到我使用的是ruby 2.3:)我不知道这个“安全导航”,它非常有用这是一种新的说法
。试试(:template)
我不知道。谢谢@Ursus@AndreyDeineko谢谢,好建议=>我检查了谢谢,我应该提到我使用的是ruby 2.3:)不知道这个“安全导航”,它非常有用这是一种新的说法
。试试(:template)
我不知道。谢谢@Ursus@AndreyDeineko谢谢,好建议=>我检查了侧注:这似乎更具声明性:
ModalType.find_by(id:modal['modal_id'])
侧注:这似乎更具声明性:
ModalType.find_by(id:modal['modal_id'])