お世話になっております。
実現したいこと
TrainingRecordテーブルに関連づけられているEventの値でwhere検索をかけて、一致するデータを取得したい。
テーブルの構造は以下の通りです。(※具体的なデータの値はサンプルです)
TrainingRecordテーブル
comment | picture | id |
---|---|---|
疲れた | 15 |
Eventテーブル
|part|name|weight|rep|set|training_record_id
|:--|:--:|--:|
|大胸筋|ベンチプレス |80|10|3|15
エラー
Ruby
1#TrainingRecordに関連づけられているEventテーブルのnameカラムが「ベンチプレス」のものを全て取得する処理 2@recors = TrainingRecord.joins(:event).where(event: {name:"ベンチプレス"})
これを実行したところ、以下のエラーが返ってきました。
Ruby
1ActiveRecord::StatementInvalid (Mysql2::Error: Unknown column 'event.name' in 'where clause': SELECT `training_records`.* FROM `training_records` INNER JOIN `events` ON `events`.`training_record_id` = `training_records`.`id` WHERE `event`.`name` = 3 LIMIT 1)
###試したこと
joinメソッドの使い方が間違っているのかなと思ったので、数が取得できるかどうかを見てみようと考え、以下を実行しました。
ruby
1TrainingRecord.joins(:event).count
この戻り値が54でした。
(TrainingRecord.all.countの戻り値は59)
これの結果や、エラー文を見る限り、whereメソッドあたりに何か間違いがあるような気がしているんですが、見当がつきません...。
モデルの関連付け
ファイルの内容を以下に示します
event.rb
ruby
1class Event < ApplicationRecord 2 belongs_to :training_record 3end
training_record.rb
ruby
1class TrainingRecord < ApplicationRecord 2 has_one :event 3 accepts_nested_attributes_for :event 4end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。