두 모델, 방문 및 사용자가있는 레일 앱이 있습니다. 방문에는 2 명의 사용자가 있습니다. 컨트롤러 및 엔지니어. 관계를 다음과 같이 설정했지만 어떤 이유로 인해 관련 사용자의 속성에 액세스 할 수 없습니다. 내가 궁리하고있어?관련 모델의 변수에 액세스 할 수 없습니다.
방문 모델
class Visit < ActiveRecord::Base
belongs_to :engineer, :class_name => "User", :foreign_key => 'engineer_id'
belongs_to :controller, :class_name => "User", :foreign_key => 'controller_id'
end
사용자 모델
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me
has_many :engineer_visits, :class_name => "Visit", :foreign_key => "engineer_id"
has_many :controller_visits, :class_name => "Visit", :foreign_key => "controller_id"
end
방문 인덱스보기
<% @visits.each do |visit| -%>
<%= visit.visit_date.strftime("%a %d/%m/%Y") %>
<%= visit.engineer.email %>
<% end -%>
이 wher입니다 나는 이메일 속성이있는 <%= debug visit.engineer %>
을 인쇄 할 경우
NoMethodError in Visits#index
...
undefined method `email' for nil:NilClass
을하지만 실제로 개인의 표시 속성을 얻을 수없는 다음을 제외하고, 실패 전자.
어떻게 이러한 변수에 액세스 할 수 있습니까?
감사합니다. Tudor. 항상 바보 같은 짓이야! 내 목록에 두 번째 방문에 엔지니어와 컨트롤러를 추가하는 것을 잊어 버렸습니다. 이러한 검사를 추가하면 어느 것이 누락되었는지 쉽게 알 수 있습니다. 유효성 검사 기준을 추가하기 전에 콘솔을 통해이를 추가했습니다. 나는 5 분 후에 대답을 수락 할 것이다. – Jack
나는 당신이'debug visit.engineer'를 출력하고 그 속성이 설정되어있는 것을 볼 수 있다고 말한 것 같았습니까? 또한 나중에 참조 할 수 있도록 레일즈'try' 메소드를 사용하면 약간의 공간을 절약 할 수 있습니다. 'visit.engineer.try (: 이메일)'과'visit.controller.try (: 이메일)' – Batkins