0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[rails] buildメソッドについて

Last updated at Posted at 2025-03-16

1 初めに

今回、Railsを使ってto doアプリを作っているので、同じようなアプリを作っている人の参考になればと思い記事を執筆します。
[仕様]ruby 3.3.4/Rails 7.0.8.5

2 今回の題目について

今回はbuiidメソッドを使って、コードの分量を減らしていきたいと思います。
下記はbuildメソッドを使う前のコードになります。

def create
    @task = Task.new(task_params)
    @task.user_id = current_user.id

このコードはCRUDの中のcreateメソッドでタスクを作成し、そのユーザーとタスクを紐づけるという意味のコードです。この書き方でも問題なく動作します。実際にbuildメソッドを使用した結果が以下になります。

 @task = current_user.tasks.build(task_params)

なんと!二文かかっていたのが、一文で済んでしまいました。ちなみにコードの意味は先ほどの二文と同じです。要は、current_user.tasksでユーザーとタスクを紐づけbuildでインスタンスを生成しています。しかしながら、このメソッドを使うには注意が必要です。has_many の関連付けができていないとこのbuildメソッドの書き方は成立しません。今回は以下のように関連付けがなされていました。また、この内容はRailsガイドにも乗っているのでそちらも参照してみてください。以下にリンクを載せておきます。
Railsガイド:https://railsguides.jp/association_basics.html

class User < ApplicationRecord
    has_many :tasks

このようにbuildメソッドを使う際には関連付けがどうなっているかを改めて確認したほうが良いです。

3 まとめ

buildメソッドを使わずに書くことは可能です。しかしながら、コードの可読性といった観点からしたら私自身、短くまとめられるコードがあるならそれに越したことはないなと思います。私自身まだまだ勉強の身でありますが、この記事がお役に立てたら幸いです。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?