stations(駅テーブル)とaddress_stations(住所に最寄駅を付与したテーブル)を1対多で関連づけ、それぞれからアソシエーション先の情報を取得しようとしているのですが、エラーが出てしまい取得ができません。以下に情報を記載しますので、原因についてアドバイス願えないでしょうか。
stationsテーブル(プライマリーキーはnoです)
no | name |
---|---|
1 | 品川 |
2 | 大崎 |
3 | 五反田 |
address_stationsテーブル
id | address | station_no |
---|---|---|
1 | 東京都品川区大崎2丁目XX-XX | 2 |
2 | 東京都品川区大崎5丁目XX-XX | 2 |
3 | 東京都品川区五反田1丁目XX-XX | 3 |
stations.rb
class Station < ApplicationRecord has_many :address_stations end
address_station.rb
class AddressStation < ApplicationRecord belongs_to :station, foreign_key: 'station_no', class_name: 'Station' end
関連先の情報を取得する為に試したコードとそのエラー結果
【1】address_stationからstationを呼び出そうとした結果 pry(main)> as = AddressStation.where(address: "東京都品川区大崎2丁目XX-XX") pry(main)> as.station.name NoMethodError: undefined method `station' for #<AddressStation::ActiveRecord_Relation:0x000000000677f280> from /usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.7/lib/active_record/relation/delegation.rb:125:in `method_missing' 【2】stationからaddress_stationsを呼び出そうとした結果 pry(main)> s = Station.find(2) pry(main)> station.address_stations AddressStation Load (0.8ms) SELECT `address_stations`.* FROM `address_stations` WHERE `address_stations`.`station_id` = 2 AddressStation Load (0.5ms) SELECT `address_stations`.* FROM `address_stations` WHERE `address_stations`.`station_id` = 2 LIMIT 11 => #<AddressStation::ActiveRecord_Associations_CollectionProxy:0x2e41504>
【2】のエラーを見るに、外部キーの設定がうまくいっていないように見えるのですが、コードを見返してもどうしてうまくいかないのかを発見できずにおります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/06 02:33