ihatov08 blog

プログラミング初心者だけどRailsとSwiftマスターします

whereメソッドとアソシエーション

userとtweetモデルが存在して、userのshowページでuser個人の情報を取得しつつ、userが投稿したtweetすべてを取得する方法。 whereメソッドを用いる。 @user.idが1の場合、user_idが1のtweetを取得できる。

def show
@user = User.find(params[:id])
@tweets = Tweet.where(user_id: @user.id)
end

上記のようにwhereメソッドを用いてもよいが、モデル間のアソシエーションを用いるともっと簡単に記述できる。

class User < ActiveRecord::Base
has_many :tweets
end
def show
@user = User.find(params[:id])
@tweets = @user.tweets
#user.rbにhas_many :tweetsを追加したので、@userに関連したtweetをすべて取得できる。