为什么 self 在这里似乎是零?
Why does self appear to be nil here?
在一个模型中,我有以下内容:
after_create :send_to_user
def send_to_user
puts "self before if is #{self.inspect}"
if self.non_user_email
puts "self after if is #{@self.inspect}"
@document = self.document
@email = self.non_user_email
...
end
end
出于某种原因,第一个 puts
知道 self
是什么,但第二个 puts
显示为 nil:
self before if is
#<Transaction id: 6, document_id: 2, buyer_id: nil, amount: nil, created_at: "2016-01-18 23:58:43", updated_at: "2016-01-18 23:58:43", author_id: 1, non_user_email: "pghrpg@gmail.com">
self after if is nil
这怎么可能?
您给第二个 puts
一个名为 @self
的实例变量,而您应该只发送它 self
。实例变量(以@
开头的变量)默认为nil
。你只需要去掉 self 前面的那个额外的@,就像这样:
puts "self after if is #{self.inspect}"
在一个模型中,我有以下内容:
after_create :send_to_user
def send_to_user
puts "self before if is #{self.inspect}"
if self.non_user_email
puts "self after if is #{@self.inspect}"
@document = self.document
@email = self.non_user_email
...
end
end
出于某种原因,第一个 puts
知道 self
是什么,但第二个 puts
显示为 nil:
self before if is
#<Transaction id: 6, document_id: 2, buyer_id: nil, amount: nil, created_at: "2016-01-18 23:58:43", updated_at: "2016-01-18 23:58:43", author_id: 1, non_user_email: "pghrpg@gmail.com">
self after if is nil
这怎么可能?
您给第二个 puts
一个名为 @self
的实例变量,而您应该只发送它 self
。实例变量(以@
开头的变量)默认为nil
。你只需要去掉 self 前面的那个额外的@,就像这样:
puts "self after if is #{self.inspect}"