モデルの関連付け!ruby on railsで書くassociationの使い方【初心者向け】

Railsでassociationを使う方法を解説しています。Webアプリを開発する中では当然のように必要になってくるものなので使えるようにしておきましょう。実際にソースコードを見ながら理解していきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が1,000以上あります。

Ruby On Rails にはassociationという機能があります。これは、モデルとモデルを関連付けるためのもので、これを行うことによってコード内の操作がわかりやすくなります。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

associationの書き方

今回はブログシステムを例に考えてみます。以下のように、ブログは一人のユーザー(User)に対して、たくさんの投稿(Post)が関連づけられています。

TechAcademyのブログ
|---初めてのRails
|---初めてのassotiation

これをコードで表すと以下のようになります。

class User
has_many :posts
end
class Post
belong_to :user
end

Userクラス内でpostsと複数形になっているのに注意してください。

このように、一つのユーザーに対して、多数の投稿を関連付けることができました。

 

データの取得方法

TechAcademyのブログ
|---初めてのRails
|---初めてのassociation

先ほどと同じように、ブログのユーザーとポストで考えてみたいと思います。

user.posts.size            #=>2
user.posts[0].text     #=>初めてのRails
user.posts[1].text     #=>初めてのassociation
Parent.Children.要素名

で取得することができます。

 

[PR] プログラミングで挫折しない学習方法を動画で公開中

データの保存方法

次にデータの保存方法について説明します。

user = User.create(name: "TechAcademyのブログ")
post = user.posts.create(text: "初めてのRails")
user.name    #=>TechAcademyのブログ
user.posts[0].text   #=> 初めてのRails

また、以下のようにcreateの代わりにbuildを使うとデータベースに保存されずに使用することができます。

user = User.create(name: "TechAcademyのブログ")
post = user.posts.build(text: "初めてのRails")
user.name    #=>TechAcademyのブログ
user.posts[0].text   #=> 初めてのRails
post.persisted?   #=> false

 

合わせてマイグレーションの実行を行う方法などをまとめた記事もご覧ください。

簡単にassociationについて解説しました。

モデルを扱う上で大事な知識になりますので、是非理解を深めておきましょう。

[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。