それは、データベースから何が必要かによって異なります。.where を呼び出すと、常に nil 以外の結果が得られます (条件に一致するものが見つからない場合、空の配列になります)。
あなたの場合、空の配列で .first を呼び出すとエラーが発生するため、何も見つからない場合は nil エラーが発生します。
単一のレコードの存在を確認している場合、
find_by_name('Prescriber Activity With Patient')
...あなたのfind_byパスです。だからあなたはこのようなことをすることができます
if @irmi = InsightReportMenuItem.find_by_name( "Prescriber Activity With Patient")
#redirect to insight_report_menu_item_path(@irmi) or whatever
else
#redirect_to root_path or whatever
end
.where を使用している場合は、.any? を使用できます。そして、.first if .any? を呼び出します。true を返します。それが役立つことを願っています。記録として、find_by_(InsightReportMenuItem テーブルの任意の属性) を実行できます。例えば:
InsightReportMenuItem.find_by_id(1)
テーブルの最初のものを生成します。