Ruby on Rails 5.0.0.1で開発しています。
messageというモデルが以下のtable(中身は一例です)を持っています。
ruby
1#message table 2id: 1, 3user_id: 2 #外部キー, 4lesson_id: 24 #外部キー 5body: "申し込みを希望します",
lessonはadviserがadviser has_many lessonsとして複数所有していて、個別のlessonにmessage(外部キーとしてlesson_idを持つ)が関連つけられています(lesson has many messages)。つまりは以下の通り。
ruby
1#@adviserはたくさんいるadviserの中の1人とします 2@adviser.lessons.ids => [1, 2, 3, 24]
messageをadviserの画面のindexで表示する際に、上記の例で言えば、@adviser.lessons.idsの中に含まれているlessonに関連つけられているmessageを全て抜き出す(@message.lesson_idが@adviser.lesson.idsに含まれていれば対象)としたい場合のmessage_controllerのindex メソッドでのwhere以下の書き方がわからず、ご教示頂けると助かります。
つまり、adviserが複数所有するlessonに対して発せられたmessage全てを取ってきたい、との意図です。
ruby
1def index 2 @user = current_user 3 current_user_id = @user.id 4 @messages = Message.where(deleted: false, user_id: current_user_id).or(Message.where(deleted: false, lesson_id:???)).page(params[:page]) 5 end
messageモデルにadviser_id(外部キー)を持たせて、Message.where(deleted: false, adviser_id: adviser_id)とした方が早いでしょうか? messageに必要以上にカラムを持たせることが如何なことかと思い悩んでいます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/11 04:08
2017/05/11 04:22 編集
2017/05/11 07:49