我正在尝试使用我班级的后缀列,但我一直收到此错误。
未定义的方法`后缀' 零:NilClass
message_mailer.rb
class MessageMailer < ActionMailer::Base
default :from => "noreply@cs.tsu.edu"
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
答案 0 :(得分:1)
确保user
实际上是一个对象。
def message_sender(user)
if user
#your code
else
puts 'Error: User is nil'
end
end
答案 1 :(得分:1)
我相信Sam所说的是确保您实际上将用户模型的实例传递到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()。所有的功劳归于Sam回答。 (如果我不是新用户,我会对他的帖子发表评论)。