質問

Show Venue の2つのモデルがあります。ショーには1つの会場があり、各会場はショーに属します。この条件は、両方のモデルファイルで has_one &で定義されています。 belongs_to ステートメントが適切に。ただし、 show.venue を実行して会場にアクセスすることはできません。 sが Show インスタンスである次のコードを検討してください。

logger.info("*********************")
logger.info("#{s.inspect}")
logger.info("#{Venue.find(s.venue_id)}") # Works
logger.info("#{s.venue}") # Causes a MySQL Error
logger.info("*********************")

MySQLエラーの原因となった行は機能するはずです。これはエラーです:

ActiveRecord::StatementInvalid (Mysql::Error: Unknown column 'venues.show_id' in 'where clause': SELECT * FROM `venues` WHERE (`venues`.show_id = 95)  LIMIT 1)

venues.show_id にアクセスしようとしている理由がわかりません。アイデアはありますか?

役に立ちましたか?

解決

外部キーが逆になっています。 ActiveRecordの規約では、belongs_toを持つクラスは、外部キーを持つデータベーステーブルにマップする必要があります。 ActiveRecord API を参照してください:" belongs_toアソシエーションは常に外部キーを持つモデル。」 belongs_toがhas_oneとhas_manyの両方とやり取りする方法を考えると、これはある程度理にかなっています(明らかに外部キーをhas_manyモデルに入れることはできません)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top