2010-12-09 4 views
0

클래스의 접미사 열을 사용하려고하는데이 오류가 계속 발생합니다. 닐위한레코드의 필드에 액세스 할 수 없습니다.

정의있어서 접미사 ''NilClass

message_mailer.rb

class MessageMailer < ActionMailer::Base 
    default :from => "[email protected]" 

    def message_sender(user) 
    @user = user 
    carrier= user.carrier 
    sms=user.telephone +carrier.suffix 
    attachments["smalltsulogo.png"] = File.read("#{Rails.root}/public/images/smalltsulogo.png") 
    mail(:to => "#{user.login} <#{user.email}>", :subject => "New Message from cs.tsu.edu") 
    mail(:to => "#{user.login} <#{sms}>", :subject => "New Message from cs.tsu.edu") 
    end 
end 

CreateCarriers 이주

class CreateCarriers < ActiveRecord::Migration 
    def self.up 
    create_table :carriers do |t| 
     t.string :name 
     t.string :suffix 

     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :carriers 
    end 
end 

는 캐리어 인덱스를 추가

class AddIndexToCarrier < ActiveRecord::Migration 
    def self.up 
    add_index :carriers, :suffix 
    end 

    def self.down 
    remove_index :carriers, :suffix 
    end 
end 

답변

1

샘이 말하는 것은 실제로 사용자 모델의 인스턴스를 message_sender 함수에 전달하고 있는지 확인하는 것입니다. 샘의 예를 확장하려면

def message_sender(user) 
    if user.class != User 
     #your code 
    else 
     puts 'Error: input is not a User Object' 
    end 
end 

이 코드는 전달 된 user 변수가 User 클래스가 아닌 경우 오류를 인쇄합니다. 이렇게하면 응용 프로그램에서 message_sender()를 호출 할 때마다 문제가 발생할 가능성이 있다는 오류 메시지가 인쇄됩니다. message_sender()에 유효한 사용자 객체를 전달하고 있는지 확인하십시오. 모든 신용은 Sam에게 응답하기 위해 사용됩니다. (내가 새로운 사용자가 아니었다면 나는 그의 게시물에 대해 언급했을 것이다.)

1

user이 실제로 개체인지 확인하십시오.

def message_sender(user) 
    if user 
     #your code 
    else 
     puts 'Error: User is nil' 
    end 
end 
+0

나는 잘못된 장소를보고있는 사람에게 –

+0

이 실제로 'user' 객체를 보내지 않는 한 나에게 같은 오류를주는 것을 돕지 않았다. 그것이 당신의 문제입니다. 행운을 빕니다 :) – s84

관련 문제