2010-12-09 82 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函数。以Sam的示例为例进行说明:

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

如果传入的用户变量不是类User的,则此代码将打印错误。如果这确实打印了错误消息,那意味着问题可能发生在您在应用程序中调用message_sender()的任何地方。检查您是否将有效的用户对象传递给message_sender()。所有的荣誉都归山姆来回答。 (如果我不是新用户,我只会对他的帖子发表评论)。

1

确保user实际上是一个对象。

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

这并没有帮助任何它只是给我同样的错误,除非我看错了地方 – 2010-12-09 21:14:21

相关问题