저는 Ruby on Rails의 절대 초보자입니다. 나는 지난 밤에 말 그대로 시작했다. 몇 가지 수정을 했는데도 Getting Started with Rails 튜토리얼을 따르고 있습니다. 게시물 및 댓글이 포함 된 블로그 대신 프로젝트와 관련된 작업이 포함 된 간단한 작업 추적 응용 프로그램을 만들고 있습니다.부모 모델 방법이 정의되지 않았습니다.
step #9 (Deleting Comments)까지 모든 것이 아주 잘 진행되고있었습니다. 튜토리얼에 따르면, 나는 comment.post
을 호출하여 주석을위한 부모 모델을 얻을 수 있어야하는데,이 경우 내 경우에는 task.project
이다. 다음과 같이
undefined method `project' for #<Task:0x7fb0011cf058>
내 모델
은 다음과 같습니다 : 레일 내가task.project
있어하는 부분을 렌더링 할 때, 그것은이 NoMethodError 제기
class Project < ActiveRecord::Base
validates :name, :presence => true
has_many :tasks, :dependent => :destroy
end
class Task < ActiveRecord::Base
validates :name, :presence => :true
belongs_to :project
end
를 레일 콘솔을 사용하여, 나는 것으로 결정 내 작업에는 관련 프로젝트의 ID를 반환하는 project_id
메서드가 있습니다. 따라서 나는 task.project
대신 Project.find(task.project_id)
을 사용하여 문제를 해결할 수 있습니다. 그것은 "틀린"것처럼 보이지만 내 두 모델 간의 관계가 어떻게 든 부숴 지는지 궁금하게 만듭니다.
여기 무슨 일 이니?
업데이트 : 작업 모델에서 validates
행을 주석 처리하면 모든 메소드가 제대로 작동합니다. 나는 그것이 왜 그런지 이해하지 못한다.
업데이트 2 : 알아 냈어. 내 작업 모델의 validates
행에있는 간단한 부울 값 대신에 :true
기호를 사용하고있었습니다. 처음에 스택 추적에 더 많은주의를 기울 였다면 훨씬 빨리 알았을 것입니다. 정말 당황 스럽네!
코드가 정상적으로 보입니다. – tybro0103
작업에 이름 속성이 있습니까? 어쩌면 당신은 당신의'schema.rb'의 관련 덩어리를 포함시킬 수도 있습니다. –