プログラミング備忘録

プログラミングの学習状況をメモしています

9日目

今日の学習

Ruby

Active Record

ドットインストールにて学習。

データベースからデータを選択し、モデルやコントローラに処理を書き込むのはすでに何度かやっているが、そのときの書き方がどういった意味を持っているのか、またどういう風に書けばいいのか、ということへの理解が深まった。

バリデーションをなぜそこに書くのかも理解できた。

User.find_by(name: "tanaka")
User.find_by name: "tanaka"
User.find_by_name "tanaka"
User.find_by_name("tanaka")

これは、どの書き方でも同じ意味を持つということは覚えておきたい。

また、抽出条件はクラスメソッドやscopeを使うことで登録することができる。

ゲッターとセッター

課題をやっている中で、複数のクラスを使用するものが出てきた。

どうにも上手くいかず、そもそも自分が基礎の部分を理解できていないからだということが何となく分かる。

ゲッターやセッターを何となく使い、@変数を書いている状態なので、今一度基礎の部分をしっかり学ぶ必要を強く感じた。

明日はこの部分を重点的に復習して、課題に取り組もうと思う。

学習メモ

  • プレースホルダー ...条件文字列に値を埋め込む場合は、変数の値を直接入れてはいけない
#?に埋め込む場合 ?に埋め込みたい値を後ろで指定
User.where("age >= ? and age <?", min, max)

#シンボルを使う場合
User.where("age >= :min and age < :max", { min: min, max: max })
# likeを使用し、文字列の部分一致を見る場合
User.where("name like ?", "検索したい文字列")
  • クエリメソッドをまとめてみた[Rails] - Qiita
  • find_or_create_byメソッド ...検索し、存在しなかった場合は新しくレコードを作成する
  • シンボルは、見かけは文字列のようだが内部では数値として扱われている
  • callback ...特定の処理が行われる前後で自動的に何らかの処理を行う
  • アソシエーション ...複数のテーブル(オブジェクト)を関連づけて扱う
class User < ActiveRecord::Base
  has_many :comments, dependent: :destroy
end

class Comments < ActiveRecord::Base
  belongs_to :user
end

ユーザーとコメントを紐づける。単数系、複数形に注意。

userは、コメントを複数持つので、複数形 comments

commentsは、一人のuserに属するので、単数系 user

また、dependent: :destroyをつけることにより、ユーザーが削除された際に関連するオブジェクトのレコードも削除してくれるようになる。