白ヒゲさんののんびり blog

プログラミング初学者が書く。間違い探しブログです。勉強中はRuby on Railsです。

【rails】 前回実装した検索機能を改善した件!

こんにちは、白ヒゲさんです(*´∇`*)

 

今回は前回実装した複数モデルからの検索機能の実装の改善です!!

詳しくは下の記事を参照にしてください♪

【rails】 ransackを使わずに複数モデルから値を取得する!! - 白ヒゲさんののんびり blog

 

と言うことでどこを改善していくのか?

改善というよりそもそも欠陥コードなんですよね_:(´ཀ`」 ∠):

 

それでは、今回改善する問題点はこれです!!

・tagがついていないと曖昧検索どころか検索できない。

・tag_nameとblog_titleが重複してしまうと同じ奴でも構わず複数個表示してしまう。

 

この2点を改善していきます。

 

まずは現状のコードを確認していきます。

今回の争点になる部分はmodel内のみなのでmodelないのみ表示していきます。

(controllerは前回のを参照してくださいね)

 

<blog_model>

f:id:t_custom8:20201122151317p:plain

 

f:id:t_custom8:20201122151114p:plain

注目するべきは全てif @tag.present?内にあります。

 

一点目のtag_name無しでも検索できるようにする問題を解決していきます。

邪魔だったのが、if @tag.present?ですね。

良かれと思って作成した条件分岐がアダとなってtag配列が存在しない場合に何も表示しない状態になってました。

なのでこの条件分岐を削除して中身のみ残します。

 

これで怪傑ゾロリです。

 

それでは、二点目の問題点を解決していきます!

これは、最後の@blogのところにuniqメソッドを追加します。

uniqメソッドは重複している配列内の要素を取り除いて新しい配列を返してくれるので便利です。

 

これで二点目も解決ゾロリです(*´∇`*)

 

最終的には先ほどのコードがこのような感じに変化します!

f:id:t_custom8:20201122152053p:plain

 

これでどこからでも曖昧検索が可能になりましたd(^_^o)

書いてみるとこれだけなのですが、かなり苦戦しました...でも動いてくれると嬉しいですね!

 

それでは、今回も最後まで見てくださいましてありがとうございました。