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