アウトプットを頑張る

初めてのプログラミング学習期間中の記録と、日頃読んでいる本をメモのアウトプットをがんばります。

【プログラミング学習】Ruby on Rails 投稿検索機能

f:id:yuma6128:20210829071916j:plain■プログラミング学習

searchアクション
search
という命名で、7つのアクション以外のアクションを定義する。
collection memberをルーティングを設定する際に使用する。
これを使用することで、生成されるルーティングのURLと実行されるコントローラーを任意にカスタムが可能。

collectionには、ルーティングに :id がつかない
memberには、ルーティングに :id がつくという違いがある。

```記述例
Rails.application.routes.draw do
  resources :tweets do
    collection do
      get 'search'
    end
  end
end
```
```記述例
Rails.application.routes.draw do
  resources :tweets do
    member do
      get 'search'
    end
  end
end
```
ビジネスロジック
ビジネスロジックとは、データに対する処理などを行うプログラム処理のこと。
「データをどのように処理するのか」「どのデータを取得するのか」「どのような手順で処理をしていくのか」などを指します。

検索したキーワードが含まれている投稿を取得するために、whereメソッドLIKE句を利用する。

whereメソッド
モデルが使用できる、ActiveRecordメソッドの一つ。
モデル.where(条件)のように、引数部分に条件を指定することで、テーブル内の「条件に一致したレコードのインスタンス」を配列の形で取得できます。

```whereメソッド
モデル.where('検索対象となるカラムを含む条件式')
```
条件式には、'カラム名 > 5'やキーバリューの形で カラム名:値 などの記述が可能
また、whereメソッドを連続して記述することで、複数条件に一致したレコードを取得することもできます。
```whereメソッド
モデル.where('検索対象となるカラムを含む条件式').where('検索対象となるカラムを含む条件式')
```

LIKE句
LIKE句は、曖昧な文字列の検索をするときに使用するもので、whereメソッドと一緒に使用する。
たとえば、「1文字目に'a'という文字列が入ったデータ」や「最後の文字に'c'と入っているデータ」、「文字列の途中に'f'が入ったデータ」などを検索するものです。

・曖昧文字列について
文字列 | % 
意味  |任意の文字列(空白文字列含む)

文字列 | _
意味  |任意の1文字

```例 aから始まるタイトル
where('title LIKE(?)',"a%")
```
```例 aで終わるタイトル
where('title LIKE(?)',"%a")
```
```例 aが含むタイトル
where('title LIKE(?)',"%a%")
```
```例 aで始まる2文字のタイトル
where('title LIKE(?)',"a_")
```
 ```例 aで終わる2文字のタイトル
where('title LIKE(?)',"_a")
```
「テーブルとのやり取りに関するメソッドはモデルに置く」

f:id:yuma6128:20210811073847j:plain■読書
スタンフォードの脳外科医が教わった人生の扉を開く最強のマジック ジェームズ・ドゥティ  (著), 関 美和 (翻訳) がKindleでセールになっていたため、購入して読んでいます。
内容としては、著者の自伝?の形で幼少期の壮絶な環境から、一人の女性と出会いマジックと言うなのマインドフルネスを教えてもらい、そこから人生が好転してと書くと運のように感じてしまうが、筆者の努力や瞑想を取り組むことでのメタ認知の向上からの医者になるという夢を掴むための行動がとても心動かされました。
まだ、半分くらいなので、次回も続きを書いていきます。