概要
モデルのオブジェクト.カラム名
で、データの読み書きができる
⭐️boolean型のものには、?
付きのエイリアスが定義されるので、基本的にこれを使う
🚨データベースに保存するにはsave
メソッドが必要モデルのオブジェクト.関連付けされたテーブル名
で、「関連付けられたオブジェクト、又はそのRelation」を取得できる
🚨注意点
クエリの返り値としてのRelation < 【Rails】クエリの返り値とメソッド(ActiveRecord::Relation) 🚧作成中
書き方例
カラム名による読み書き
3 Active Recordのモデルを作成する < Active Record の基礎 - Railsガイド
- テーブルのカラム名を使って、下記のように読み書きができる
⭐️boolean型のものには、?
付きのエイリアスが定義されるので、基本的にこれを使う
🚨データベースに保存するにはsave
メソッドが必要
(create
又はupdate
を使えば、save
は不要)
5 CRUD: データの読み書き < Active Record の基礎 - Railsガイド
book = Book.new book.name = "Hoge Hoge" puts book.name # "Hoge Hoge" # boolean型の場合、基本的に?付きのエイリアスを使う @blog.secret?
Railsのモデルでboolean型のものは、?付きのメソッドがデフォルトであるのですか?
rails/activerecord/lib/active_record/attribute_methods/query.rb at main · rails/rails
1.2 AttributeMethodsモジュール < Active Model の基礎 - Railsガイド
テーブル名によるデータ取得
【Rails】モデルの関連を活用してデータを取得しよう | FJORD BOOT CAMP(フィヨルドブートキャンプ)
# 関連付けを使った書き方(推奨) @blog = current_user.blogs.find(params[:id]) # 上記を、関連付けを使わないで書いた場合 @blog = Blog.where(user_id: current_user.id).find(params[:id])
「関連付け」種類による返り値の違い
4.1.1.1 association < Active Record の関連付け - Railsガイド
4.2.1.1 association < Active Record の関連付け - Railsガイド
4.3.1.1 collection < Active Record の関連付け - Railsガイド
4.4.1.2 collection < Active Record の関連付け - Railsガイド
belongs_to
、has_one
関連付け
association
メソッド:
関連付けられたオブジェクトを返す
関連付けられたオブジェクトがない場合はnil
を返すhas_many
、has_and_belongs_to_many
関連付け
collection
メソッド:
関連付けられたすべてのオブジェクトのRelationを返す
関連付けられたオブジェクトがない場合は、空のRelationを1つ返す
# association メソッド @author = @book.author # collection メソッド @books = @author.books
「関連付け」で使える、その他のメソッド
⭐️ 4 関連付けの詳細な参照 < Active Record の関連付け - Railsガイド
has_many :through
関連付けで、中間テーブルを書かない方法
2.4 has_many :through関連付け < Active Record の関連付け - Railsガイド
以下のようにthrough: :sections
を指定すると、中間テーブルを書かなくて良くなり、@document.paragraphs
と書ける
class Document < ApplicationRecord has_many :sections # ↓を指定する has_many :paragraphs, through: :sections end class Section < ApplicationRecord belongs_to :document has_many :paragraphs end class Paragraph < ApplicationRecord belongs_to :section end