내 컴퓨터에서 로컬로 작동하지만 Heroku에서는 실패하는 메소드가 있습니다.Rails/Heroku : 정의되지 않은 메소드 'events'for nil : NilClass
NoMethodError (전무에 대한 정의되지 않은 메서드`이벤트 ': NilClass)에게 Heroku 로그는 말을 나는이 방법의 동등한에 대한 Heroku가 콘솔을 사용했다
하고 그렇게 작동을 지원하는 데이터가있다. 방법은 다음과 같습니다.
def index
@events = current_user.school.events
end
나는 현재의 사용자 메소드를 제공하는 Devise를 사용하고 있습니다. 이에 해당하는 a = User.first.school.events는 데이터와 함께 실제 인스턴스 값을 산출합니다. User.first는 올바른 데이터를 산출합니다. 여기
내 모델입니다 :class School < ActiveRecord::Base
#validates_presence_of :name
has_many :events, :dependent => :destroy
has_many :users, :dependent => :destroy
belongs_to :user
belongs_to :event
def self.fetch_for_name(_name)
school = self.new(:name => _name)
end
end
class User < ActiveRecord::Base
belongs_to :school
rolify
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :name, :email, :password, :password_confirmation, :remember_me
end
class Event < ActiveRecord::Base
belongs_to :school
end
내가하지만 몇 가지 간단한 기본적인 것을 간과 경우 나 같은 것 내가 제대로 Heroku가 콘솔에서이 작업을 수행 할 수 있다면, 왜이 방법을 바꿈 것. 관련없는 또 다른 페이지가 Heroku에서 올바르게 작동합니다.
학교 모델에서 'has_and_belongs_to_many : users'를 사용하지 않는 이유는 무엇입니까? current_user와 연관된 '학교'레코드가 없기 때문에 오류가 발생합니다. 'School' 모델에서 DB 외래 키와 관계 로그인을 확인해야합니다. – thesis
경험이 없을 것 같습니까? 당신이 제안한 것처럼 관계를 통합 할 때, 그것은 : 종속적 인 절을 좋아하지 않았습니다. Yanking은 이전과 같이 로컬에서 작동합니다. 하지만 관련 레코드를 삭제할 수있는 기능이 필요합니다. 왜 그것이 Heroku에서 작동하지 않는지에 관해서는, 나는 내 관계를 믿고 사용자의 school_id 필드가 있습니다. current_user와 User.first가 같지 않다고 제안하고 있습니까? 이 Heroku 응용 프로그램에서 pry를 사용하는 방법이 있습니까? 내가 말했듯이, 그것은 지역에서 효과가 있습니다. – sam452