HAS_ONE과 관련된 모델에 액세스 할 수 없습니다
-
03-07-2019 - |
문제
두 가지 모델이 있습니다. Show
그리고 Venue
. 쇼에는 하나의 장소가 있으며 각 장소는 쇼에 속합니다. 이 조건은 두 모델 파일에 정의됩니다 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의 규칙에서 SONGS_TO의 클래스는 외국 키와 함께 데이터베이스 테이블에 매핑되어야합니다. 참조 ActiveRecord API: "소속 _to 협회는 항상 외국 키가있는 모델에 사용됩니다." has_one 및 has_many와 함께 소속 된 방식에 대해 생각한다면 (Has_many 모델에 외래 키를 넣을 수 없기 때문에) 이것은 의미가 있습니다.
제휴하지 않습니다 StackOverflow