2011-06-10 5 views
0

튜토리얼을 작성 중이고 튜토리얼을 약간 벗어나서 몇 가지 문제가 발생했습니다.레일에서 속성에 대한 메소드 호출하기

나는 name, genre, showtime, showdate, release year 및 title 속성이있는 영화 모델을 가지고 있습니다. 나는 모든 영화, 시간, 장르 등을 나열하는 프로그램입니다. 내 movie.rb 파일에서 setter 및 getter 메서드를 사용할 수 있도록 attr_accessor : 장르를 추가했지만 콘솔에 들어가서 모든 특성을 가진 동영상을 만들면 : 장르가 계속 "nil"로 유지되지만 내가 movie.genre를 호출하면 올바른 장르로 표시됩니다. 왜 그런지 모르겠다.

장르가 클래스가 아니기 때문에 데이터베이스의 모든 장르를 나열 할 수있는 메소드가 있습니까?

감사합니다.

답변

2

영화 테이블의 장르는 장르입니까? 그렇다면 attr_accessor를 사용하는 이유는 무엇입니까?

질문의 두 번째 부분은 movie.rb에 모든 장르를 나열하는 클래스 메소드를 작성할 수 있습니다. 뭔가 같은 :

+1

당신은 루비 클래스를 작성하는 경우 빌의 첫 번째 의견을 명확히하기 위해 attr_accessor를 사용하여 속성에 대한 일반 getter 및 setter를 설정합니다. Rails에서는 테이블의 필드에 매핑되는 속성에 대해이 작업이 필요하지 않습니다. Rails는 데이터베이스 테이블의 모든 필드에 대해 일반 getter 및 setter로 모델을 자동으로 채 웁니다. 자신 만의 정의가 필요한 유일한 경우는 테이블에 매핑되지 않는 특성을 모델에 추가하는 경우 (이유는?) 또는 일반적인 경우를 넘어 getter/setter에서 특별한 처리가 필요한 경우입니다. – Yardboy

+0

클래스 메서드를 사용하는 방법을 나에게 명확하게 해 주신 Bill에게 감사드립니다. Ruby와 Rails 사이의 해명에 감사하는 Yardboy. attr_accessor는 데이터베이스에 저장되지 않을 암호 같은 경우에만 필요합니다. – noob

+0

attr_accessors를 수정하십시오. 야드 보이 (Yardboy)는 분명히 더 잘 설명해 주었고, 이제는 더 잘 처리 할 수있는 것처럼 들립니다. 그러나 예, 암호 (또는 DB의 실제 열이 아닌 다른 필드)의 경우 attr_accessor의 사용은 완벽합니다. –

관련 문제